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