X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flibpspp%2Fzip.at;h=77ca00e1c68cb38e16388b1ecd7f3f5c9df8d3d8;hb=e804300543c1c37393cb6d777e8a2f05686ff2cb;hp=55bf563f1b66441d31155c6426e713164ae6da9a;hpb=8b30bfd6dd3f8ce0218d6ec4cae3796fc87cb86e;p=pspp diff --git a/tests/libpspp/zip.at b/tests/libpspp/zip.at index 55bf563f1b..77ca00e1c6 100644 --- a/tests/libpspp/zip.at +++ b/tests/libpspp/zip.at @@ -1,9 +1,23 @@ +dnl PSPP - a program for statistical analysis. +dnl Copyright (C) 2017 Free Software Foundation, Inc. +dnl +dnl This program is free software: you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation, either version 3 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program. If not, see . +dnl AT_BANNER([zip]) -AT_SETUP([Basic zip - unzip test]) +AT_SETUP([basic zip - unzip test]) AT_KEYWORDS([compression]) - -AT_CHECK([dnl here=`pwd` dir1=$here/original dir2=$here/recovered @@ -21,23 +35,68 @@ while test $s -le 8192 ; do names="$names $bn"; done -(cd $dir1 && $abs_top_builddir/tests/libpspp/zip-test w foo.zip $names) +AT_CHECK([cd $dir1 && zip-test w foo.zip $names]) +# If zipinfo is installed, make sure it can read the zipfile. +if (zipinfo -v) >/dev/null 2>&1; then + AT_CHECK([zipinfo $dir1/foo.zip], [0], [ignore]) +fi mkdir -p $dir2 cp $dir1/foo.zip $dir2 -cd $dir2 -$abs_top_builddir/tests/libpspp/zip-test r foo.zip $names +cd $dir2 -# Compare the files to their originals -for f in $names; do - diff $dir1/$f $dir2/$f; - if test $? -ne 0 ; then exit 1; fi; -done +AT_CHECK([zip-test r foo.zip $names]) -exit 0 +AT_CHECK([ + # Compare the files to their originals + for f in $names; do + diff $dir1/$f $dir2/$f; + if test $? -ne 0 ; then exit 1; fi; + done ]) +AT_CLEANUP -AT_CLEANUP +AT_SETUP([zip to pipe]) +AT_KEYWORDS([compression]) +here=`pwd` +dir1=$here/original +dir2=$here/recovered +mkdir -p $dir1 + +# Generate files of differing sizes with random data in them +names="" +s=1; +while test $s -le 8192 ; do + name=$dir1/$s + dd if=/dev/urandom of=$name count=1 bs=$s 2> /dev/null + s=$(($s * 2)); + bn=`basename $name`; + names="$names $bn"; +done + +# The pipe through "cat" below is essential because it makes the +# output file un-seekable. +AT_CHECK([cd $dir1 && zip-test w - $names | cat > foo.zip]) + +# If zipinfo is installed, make sure it can read the zipfile. +if (zipinfo -v) >/dev/null 2>&1; then + AT_CHECK([zipinfo $dir1/foo.zip], [0], [ignore]) +fi + +mkdir -p $dir2 +cp $dir1/foo.zip $dir2 +cd $dir2 + +AT_CHECK([zip-test r foo.zip $names]) + +AT_CHECK([ + # Compare the files to their originals + for f in $names; do + diff $dir1/$f $dir2/$f; + if test $? -ne 0 ; then exit 1; fi; + done +]) +AT_CLEANUP