xref: /netbsd-src/tests/usr.bin/gzip/t_gzip.sh (revision f80fa140f053500658b19267ef14e48baabe8419)
1*f80fa140Smartin# $NetBSD: t_gzip.sh,v 1.4 2024/10/15 18:09:31 martin Exp $
228604916Sjruoho#
328604916Sjruoho# Copyright (c) 2008 The NetBSD Foundation, Inc.
428604916Sjruoho# All rights reserved.
528604916Sjruoho#
628604916Sjruoho# Redistribution and use in source and binary forms, with or without
728604916Sjruoho# modification, are permitted provided that the following conditions
828604916Sjruoho# are met:
928604916Sjruoho# 1. Redistributions of source code must retain the above copyright
1028604916Sjruoho#    notice, this list of conditions and the following disclaimer.
1128604916Sjruoho# 2. Redistributions in binary form must reproduce the above copyright
1228604916Sjruoho#    notice, this list of conditions and the following disclaimer in the
1328604916Sjruoho#    documentation and/or other materials provided with the distribution.
1428604916Sjruoho#
1528604916Sjruoho# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
1628604916Sjruoho# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1728604916Sjruoho# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1828604916Sjruoho# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
1928604916Sjruoho# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2028604916Sjruoho# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2128604916Sjruoho# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2228604916Sjruoho# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2328604916Sjruoho# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2428604916Sjruoho# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2528604916Sjruoho# POSSIBILITY OF SUCH DAMAGE.
2628604916Sjruoho#
2728604916Sjruoho
2828604916Sjruohoatf_test_case concatenated
2928604916Sjruohoconcatenated_head()
3028604916Sjruoho{
3128604916Sjruoho	atf_set "descr" "Checks concatenated gzipped data"
3228604916Sjruoho}
3328604916Sjruohoconcatenated_body()
3428604916Sjruoho{
3528604916Sjruoho	echo -n "aaaa" | gzip > tmp.gz
3628604916Sjruoho	echo -n "bbbb" | gzip >> tmp.gz
3728604916Sjruoho
3828604916Sjruoho	atf_check -o inline:"aaaabbbb" gzip -d tmp.gz -c
3928604916Sjruoho}
4028604916Sjruoho
4128604916Sjruohoatf_test_case pipe
4228604916Sjruohopipe_head()
4328604916Sjruoho{
4428604916Sjruoho	atf_set "descr" "Checks input from pipe"
4528604916Sjruoho}
4628604916Sjruohopipe_body()
4728604916Sjruoho{
4828604916Sjruoho	atf_check -x "dd if=/dev/zero count=102400 2>/dev/null \
4928604916Sjruoho| gzip -c | dd bs=1 2>/dev/null | gzip -tc"
5028604916Sjruoho}
5128604916Sjruoho
5228604916Sjruohoatf_test_case truncated
5328604916Sjruohotruncated_head()
5428604916Sjruoho{
5528604916Sjruoho	atf_set "descr" "Checks that gzip fails on truncated data"
5628604916Sjruoho}
5728604916Sjruohotruncated_body()
5828604916Sjruoho{
5928604916Sjruoho	cat >truncated.gz.uue <<EOF
6028604916Sjruohobegin-base64 644 truncated.gz
6128604916SjruohoH4sIAAAAAAAAA0tMSk7hAgCspIpYCg==
6228604916Sjruoho====
6328604916SjruohoEOF
6428604916Sjruoho	uudecode -m truncated.gz.uue
6528604916Sjruoho
6628604916Sjruoho	atf_check -s ne:0 -e ignore gzip -d truncated.gz
6728604916Sjruoho}
6828604916Sjruoho
6928604916Sjruohoatf_test_case crcerror
7028604916Sjruohocrcerror_head()
7128604916Sjruoho{
7228604916Sjruoho	atf_set "descr" "Checks that gzip fails on crc error"
7328604916Sjruoho}
7428604916Sjruohocrcerror_body()
7528604916Sjruoho{
7628604916Sjruoho	cat >crcerror.gz.uue <<EOF
7728604916Sjruohobegin-base64 644 crcerror.gz
7828604916SjruohoH4sIAAAAAAAAA0tMSk7hAgCspFhYBQAAAA==
7928604916Sjruoho====
8028604916SjruohoEOF
8128604916Sjruoho	uudecode -m crcerror.gz.uue
8228604916Sjruoho
8328604916Sjruoho	atf_check -s ne:0 -e ignore gzip -d crcerror.gz
8428604916Sjruoho}
8528604916Sjruoho
8628604916Sjruohoatf_test_case good
8728604916Sjruohogood_head()
8828604916Sjruoho{
8928604916Sjruoho	atf_set "descr" "Checks decompressing correct file"
9028604916Sjruoho}
9128604916Sjruohogood_body()
9228604916Sjruoho{
9328604916Sjruoho	cat >good.gz.uue <<EOF
9428604916Sjruohobegin-base64 644 good.gz
9528604916SjruohoH4sICC8G8UAAA2FiY2QAS0xKTuECAKykilgFAAAA
9628604916Sjruoho====
9728604916SjruohoEOF
9828604916Sjruoho	uudecode -m good.gz.uue
9928604916Sjruoho
10028604916Sjruoho	atf_check gzip -d good.gz
10128604916Sjruoho}
10228604916Sjruoho
103b79e8711Schristosatf_test_case lzip
104b79e8711Schristoslzip_head()
105b79e8711Schristos{
106b79e8711Schristos	atf_set "descr" "Checks lzip compression levels (PR/58223)"
10793df3849Smartin	atf_set "require.progs" "lzip"
108b79e8711Schristos}
109b79e8711Schristoslzip_body()
110b79e8711Schristos{
111*f80fa140Smartin	n=net_tests.tar
112*f80fa140Smartin	tar -C /usr/tests/net -cf $n .
113b79e8711Schristos	for i in $(jot 10 0 9); do
114b79e8711Schristos		f=$n.$i.lz
115b79e8711Schristos		lzip -$ic < $n > $f
116b79e8711Schristos		gunzip -t $f > /dev/null
117b79e8711Schristos	done
118b79e8711Schristos}
119b79e8711Schristos
12028604916Sjruohoatf_init_test_cases()
12128604916Sjruoho{
12228604916Sjruoho	atf_add_test_case concatenated
12328604916Sjruoho	atf_add_test_case pipe
12428604916Sjruoho	atf_add_test_case truncated
12528604916Sjruoho	atf_add_test_case crcerror
12628604916Sjruoho	atf_add_test_case good
127b79e8711Schristos	atf_add_test_case lzip
12828604916Sjruoho}
129