X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flibpspp%2Fzip.at;h=1ab57e50d8a85ec9a44f0821993662862e1b7396;hb=8642df034e82487ec7ff476fbfbacbd5b65eb88a;hp=9598717f824e6f1d3b2804bf52583b6a7bd06076;hpb=facb4a1ad3c9e8b2cdf55824680eed2afb91aebe;p=pspp diff --git a/tests/libpspp/zip.at b/tests/libpspp/zip.at index 9598717f82..1ab57e50d8 100644 --- a/tests/libpspp/zip.at +++ b/tests/libpspp/zip.at @@ -16,44 +16,89 @@ 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 -mkdir -p $dir1 +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 + name="$dir1/$s" + dd if=/dev/urandom of="$name" count=1 bs=$s 2> /dev/null s=$(($s * 2)); - bn=`basename $name`; + bn=`basename "$name"`; names="$names $bn"; done -(cd $dir1 && zip-test w foo.zip $names) +ASAN_OPTIONS="$ASAN_OPTIONS:detect_odr_violation=0";export ASAN_OPTIONS +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 +mkdir -p "$dir2" +cp "$dir1/foo.zip" "$dir2" +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 + +ASAN_OPTIONS="$ASAN_OPTIONS:detect_odr_violation=0";export ASAN_OPTIONS +# 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