X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flibpspp%2Fzip.at;h=77ca00e1c68cb38e16388b1ecd7f3f5c9df8d3d8;hb=e804300543c1c37393cb6d777e8a2f05686ff2cb;hp=a2f9d6f17993a875340484d0bfd67a482a25b989;hpb=ca4a5e1298b3d018e45d802b12828e49b66b6c6b;p=pspp diff --git a/tests/libpspp/zip.at b/tests/libpspp/zip.at index a2f9d6f179..77ca00e1c6 100644 --- a/tests/libpspp/zip.at +++ b/tests/libpspp/zip.at @@ -1,25 +1,23 @@ dnl PSPP - a program for statistical analysis. dnl Copyright (C) 2017 Free Software Foundation, Inc. -dnl +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 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 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 @@ -37,23 +35,68 @@ while test $s -le 8192 ; do names="$names $bn"; done -(cd $dir1 && 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 -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