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 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 # 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