xref: /freebsd/usr.bin/gzip/tests/zdiff_test.sh (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
15b7adeb1SKyle Evans#
2*4d846d26SWarner Losh# SPDX-License-Identifier: BSD-2-Clause
35b7adeb1SKyle Evans#
45b7adeb1SKyle Evans# Copyright (c) 2022 Kyle Evans <kevans@FreeBSD.org>
55b7adeb1SKyle Evans#
65b7adeb1SKyle Evans# Redistribution and use in source and binary forms, with or without
75b7adeb1SKyle Evans# modification, are permitted provided that the following conditions
85b7adeb1SKyle Evans# are met:
95b7adeb1SKyle Evans# 1. Redistributions of source code must retain the above copyright
105b7adeb1SKyle Evans#    notice, this list of conditions and the following disclaimer.
115b7adeb1SKyle Evans# 2. Redistributions in binary form must reproduce the above copyright
125b7adeb1SKyle Evans#    notice, this list of conditions and the following disclaimer in the
135b7adeb1SKyle Evans#    documentation and/or other materials provided with the distribution.
145b7adeb1SKyle Evans#
155b7adeb1SKyle Evans# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
165b7adeb1SKyle Evans# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
175b7adeb1SKyle Evans# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
185b7adeb1SKyle Evans# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
195b7adeb1SKyle Evans# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
205b7adeb1SKyle Evans# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
215b7adeb1SKyle Evans# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
225b7adeb1SKyle Evans# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
235b7adeb1SKyle Evans# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
245b7adeb1SKyle Evans# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
255b7adeb1SKyle Evans# SUCH DAMAGE.
265b7adeb1SKyle Evans#
275b7adeb1SKyle Evans
285b7adeb1SKyle Evansspecials="foo'bar foo\"bar foo\$bar"
295b7adeb1SKyle Evans
305b7adeb1SKyle Evansprepare_files()
315b7adeb1SKyle Evans{
325b7adeb1SKyle Evans	compressfunc="$1"
335b7adeb1SKyle Evans	compresssuffix="$2"
345b7adeb1SKyle Evans
355b7adeb1SKyle Evans	echo "foo" > foo
365b7adeb1SKyle Evans
375b7adeb1SKyle Evans	for f in $specials foo; do
385b7adeb1SKyle Evans		[ "$f" == "foo" ] || cp foo "$f"
395b7adeb1SKyle Evans		atf_check "$compressfunc" -k "$f"
405b7adeb1SKyle Evans		atf_check tar -ckf "$f.tar" "$f"
415b7adeb1SKyle Evans		atf_check -o save:"$f.$compresssuffix" \
425b7adeb1SKyle Evans		    "$compressfunc" -c "$f.tar"
435b7adeb1SKyle Evans
445b7adeb1SKyle Evans		# Regenerate $f.tar to create a diff from the .$compresssuffix
455b7adeb1SKyle Evans		# file, too.
465b7adeb1SKyle Evans		echo "bar" >> "$f"
475b7adeb1SKyle Evans		atf_check tar -ckf "$f.tar" "$f"
485b7adeb1SKyle Evans	done
495b7adeb1SKyle Evans}
505b7adeb1SKyle Evans
515b7adeb1SKyle Evansatf_test_case gzip
525b7adeb1SKyle Evansgzip_body()
535b7adeb1SKyle Evans{
545b7adeb1SKyle Evans	prepare_files gzip tgz
555b7adeb1SKyle Evans	cp foo.gz foo.Z
565b7adeb1SKyle Evans
575b7adeb1SKyle Evans	for f in foo $specials; do
585b7adeb1SKyle Evans		atf_check -s exit:1 -o file:"$(atf_get_srcdir)"/foo.diff \
595b7adeb1SKyle Evans		    zdiff "$f.gz"
605b7adeb1SKyle Evans	done
615b7adeb1SKyle Evans
625b7adeb1SKyle Evans	atf_check -s exit:1 -o file:"$(atf_get_srcdir)"/foo.diff zdiff foo.Z
635b7adeb1SKyle Evans
645b7adeb1SKyle Evans	for f in foo $specials; do
655b7adeb1SKyle Evans		rm "$f"
665b7adeb1SKyle Evans		atf_check -s exit:1 -o match:"Binary files" zdiff "$f.tgz"
675b7adeb1SKyle Evans	done
685b7adeb1SKyle Evans}
695b7adeb1SKyle Evans
705b7adeb1SKyle Evansatf_test_case bzip
715b7adeb1SKyle Evansbzip_body()
725b7adeb1SKyle Evans{
735b7adeb1SKyle Evans	prepare_files bzip2 tbz2
745b7adeb1SKyle Evans	cp foo.bz2 foo.bz
755b7adeb1SKyle Evans
765b7adeb1SKyle Evans	for f in foo $specials; do
775b7adeb1SKyle Evans		atf_check -s exit:1 -o file:"$(atf_get_srcdir)"/foo.diff \
785b7adeb1SKyle Evans		    zdiff "$f.bz2"
795b7adeb1SKyle Evans	done
805b7adeb1SKyle Evans
815b7adeb1SKyle Evans	atf_check -s exit:1 -o file:"$(atf_get_srcdir)"/foo.diff zdiff foo.bz
825b7adeb1SKyle Evans
835b7adeb1SKyle Evans	for f in foo $specials; do
845b7adeb1SKyle Evans		rm "$f"
855b7adeb1SKyle Evans		atf_check -s exit:1 -o match:"Binary files" zdiff "$f.tbz2"
865b7adeb1SKyle Evans	done
875b7adeb1SKyle Evans}
885b7adeb1SKyle Evans
895b7adeb1SKyle Evansatf_test_case xzip
905b7adeb1SKyle Evansxzip_body()
915b7adeb1SKyle Evans{
925b7adeb1SKyle Evans	prepare_files xz txz
935b7adeb1SKyle Evans	cp foo.xz foo.lzma
945b7adeb1SKyle Evans
955b7adeb1SKyle Evans	for f in foo $specials; do
965b7adeb1SKyle Evans		atf_check -s exit:1 -o file:"$(atf_get_srcdir)"/foo.diff \
975b7adeb1SKyle Evans		    zdiff "$f.xz"
985b7adeb1SKyle Evans	done
995b7adeb1SKyle Evans
1005b7adeb1SKyle Evans	atf_check -s exit:1 -o file:"$(atf_get_srcdir)"/foo.diff zdiff foo.lzma
1015b7adeb1SKyle Evans
1025b7adeb1SKyle Evans	for f in foo $specials; do
1035b7adeb1SKyle Evans		rm "$f"
1045b7adeb1SKyle Evans		atf_check -s exit:1 -o match:"Binary files" zdiff "$f.txz"
1055b7adeb1SKyle Evans	done
1065b7adeb1SKyle Evans}
1075b7adeb1SKyle Evans
1085b7adeb1SKyle Evansatf_test_case unknown
1095b7adeb1SKyle Evansunknown_body()
1105b7adeb1SKyle Evans{
1115b7adeb1SKyle Evans	prepare_files xz fxz
1125b7adeb1SKyle Evans
1135b7adeb1SKyle Evans	for f in foo $specials; do
1145b7adeb1SKyle Evans		atf_check -s exit:1 -e match:"unknown suffix$" zdiff "$f.fxz"
1155b7adeb1SKyle Evans	done
1165b7adeb1SKyle Evans}
1175b7adeb1SKyle Evans
1185b7adeb1SKyle Evansatf_init_test_cases()
1195b7adeb1SKyle Evans{
1205b7adeb1SKyle Evans
1215b7adeb1SKyle Evans	atf_add_test_case gzip
1225b7adeb1SKyle Evans	atf_add_test_case bzip
1235b7adeb1SKyle Evans	atf_add_test_case xzip
1245b7adeb1SKyle Evans	atf_add_test_case unknown
1255b7adeb1SKyle Evans}
126