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