More ASAN_OPTIONS
[pspp] / tests / libpspp / zip.at
index a2f9d6f17993a875340484d0bfd67a482a25b989..1ab57e50d8a85ec9a44f0821993662862e1b7396 100644 (file)
 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 <http://www.gnu.org/licenses/>.
 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