]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-apt-update-transactions
eipp: add Allow-Temporary-Remove-of-Essentials
[apt.git] / test / integration / test-apt-update-transactions
index 152e1617a0d1bc614416e649cc2cf8e4fd05b916..d8154b2837afa49a828188966936385d0490c214 100755 (executable)
@@ -3,15 +3,15 @@ set -e
 
 # ensure that an update will only succeed entirely or not at all
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
 
 setupenvironment
 configarchitecture 'i386'
 configcompression '.' 'gz'
 
-insertpackage 'unstable' 'foo' 'all' '1.0'
-insertsource 'unstable' 'foo' 'all' '1.0'
+insertpackage 'unstable' 'foo' 'i386' '1.0'
+insertsource 'unstable' 'foo' 'i386' '1.0'
 
 setupaptarchive --no-update
 
@@ -29,6 +29,12 @@ restorefile() {
 }
 
 testrun() {
+       rm -rf aptarchive/dists.good
+       cp -a aptarchive/dists aptarchive/dists.good
+       insertpackage 'unstable' 'bar' 'i386' '1.0'
+       insertsource 'unstable' 'bar' 'i386' '1.0'
+       buildaptarchivefromfiles '+1 hour'
+
        # produce an unsigned repository
        find aptarchive \( -name 'Release.gpg' -o -name 'InRelease' \) -delete
        testfailure aptget update --no-allow-insecure-repositories
@@ -37,20 +43,28 @@ testrun() {
        # signed but broken
        signreleasefiles
 
+       onehashbroken() {
+               rm -rf rootdir/var/lib/apt/lists/partial
+               testfailure aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
+               # each file generates two messages with this string
+               testequal '2' grep --count 'Hash Sum mismatch' rootdir/tmp/testfailure.output
+               testfileequal "$1" "$(listcurrentlistsdirectory)"
+       }
+
        breakfile aptarchive/dists/unstable/main/binary-i386/Packages
-       testfailure aptget update
-       testfileequal "$1" "$(listcurrentlistsdirectory)"
+       onehashbroken "$1"
        restorefile aptarchive/dists/unstable/main/binary-i386/Packages
 
        breakfile aptarchive/dists/unstable/main/source/Sources
-       testfailure aptget update
-       testfileequal "$1" "$(listcurrentlistsdirectory)"
+       onehashbroken "$1"
        restorefile aptarchive/dists/unstable/main/source/Sources
+
+       rm -rf aptarchive/dists
+       cp -a aptarchive/dists.good aptarchive/dists
 }
 
 testsetup() {
        msgmsg 'Test with no initial data over' "$1"
-       redatereleasefiles 'now'
        rm -rf rootdir/var/lib/apt/lists
        mkdir -p rootdir/var/lib/apt/lists/partial
        listcurrentlistsdirectory > listsdir.lst
@@ -60,7 +74,6 @@ testsetup() {
        rm -rf rootdir/var/lib/apt/lists
        testsuccess aptget update -o Debug::pkgAcquire::Worker=1
        listcurrentlistsdirectory > listsdir.lst
-       redatereleasefiles '+1hour'
        testrun 'listsdir.lst'
 }