deprecate confusing Pkg.CandVersion() method
[apt.git] / test / integration / test-hashsum-verification
index 99ea8bffa709093932d9175ab2b0e2940afc4d23..a31be6bcb29dda2878008351ca682c35ef15f6ca 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
 
 setupenvironment
 configarchitecture "i386"
@@ -17,13 +17,11 @@ prepare() {
                DATE='now + 6 days'
        fi
        for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
-               touch -d 'now - 6 hours' $release
+               touch -d 'now - 6 hours' "$release"
        done
-       cp $1 aptarchive/Packages
+       cp "$1" aptarchive/Packages
        find aptarchive -name 'Release' -delete
-       cat aptarchive/Packages | gzip > aptarchive/Packages.gz
-       cat aptarchive/Packages | bzip2 > aptarchive/Packages.bz2
-       cat aptarchive/Packages | xz --format=lzma > aptarchive/Packages.lzma
+       compressfile aptarchive/Packages
         # create Release file with incorret checksums
        cat > aptarchive/Release <<EOF
 Date: Fri, 05 Aug 2011 09:22:08 UTC
@@ -55,27 +53,36 @@ touch aptarchive/apt.deb
 PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
 
 runtest() {
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        rm -rf rootdir/var/lib/apt/lists
        signreleasefiles 'Joe Sixpack'
        find aptarchive/ -name "$DELETEFILE" -delete
 
-        # test signed release file
-        msgtest 'apt-get update gets the expected hashsum mismatch'
-       aptget update 2>&1 | grep "Hash Sum mismatch" > /dev/null && msgpass || msgfail
-        msgtest 'No package from the source available'
-        [ "$(aptcache show apt 2>&1)" = "E: No packages found" ] && msgpass || msgfail
+       # test signed release file
+       msgtest 'apt-get update gets the expected hashsum mismatch'
+       testfailure aptget update
+       testsuccess grep "Hash Sum mismatch" rootdir/tmp/testfailure.output
+       msgtest 'No package from the source available'
+       testfailureequal --nomsg 'N: Unable to locate package apt
+E: No packages found' aptcache show apt
         msgtest 'No Packages file in /var/lib/apt/lists'
-        [ "$(ls rootdir/var/lib/apt/lists/*Package* 2>/dev/null)" = "" ] && msgpass || msgfail 
+        [ "$(ls rootdir/var/lib/apt/lists/*Package* 2>/dev/null | grep -v FAILED 2>/dev/null)" = "" ] && msgpass || msgfail 
         
         # now with the unsigned Release file
         rm -rf rootdir/var/lib/apt/lists
         rm aptarchive/InRelease aptarchive/Release.gpg
-        msgtest 'unsigned apt-get update gets the expected hashsum mismatch'
-       aptget update 2>&1 | grep "Hash Sum mismatch" > /dev/null && msgpass || msgfail
-
-
+       msgtest 'unsigned apt-get update gets the expected hashsum mismatch'
+       testfailure --nomsg aptget update --allow-insecure-repositories
+       testsuccess grep "Hash Sum mismatch" rootdir/tmp/testfailure.output
 }
 
-runtest
-
+for COMPRESSEDINDEXES in 'false' 'true'; do
+       echo "Acquire::GzipIndexes \"$COMPRESSEDINDEXES\";" > rootdir/etc/apt/apt.conf.d/compressindexes
+       if $COMPRESSEDINDEXES; then
+               msgmsg 'Run tests with GzipIndexes enabled'
+       else
+               msgmsg 'Run tests with GzipIndexes disabled'
+       fi
+        runtest
+done