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_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 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" 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 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