X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/a943fbf21ca0b9b58b8f1492fc518679b1d7c749..4b8f2236b40599e191814fcd74e6a48eeafd757f:/test/integration/test-apt-update-transactions?ds=sidebyside diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions index 247334991..a5dac1737 100755 --- a/test/integration/test-apt-update-transactions +++ b/test/integration/test-apt-update-transactions @@ -1,24 +1,90 @@ #!/bin/sh set -e +# ensure that an update will only succeed entirely or not at all + TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" +configarchitecture 'i386' +configcompression '.' 'gz' insertpackage 'unstable' 'foo' 'all' '1.0' +insertsource 'unstable' 'foo' 'all' '1.0' setupaptarchive --no-update -changetowebserver -# break package file -cat > aptarchive/dists/unstable/main/binary-i386/Packages <<EOF +breakfile() { + mv "${1}" "${1}.bak" + mv "${1}.gz" "${1}.gz.bak" + cat > "$1" <<EOF Package: bar EOF -compressfile aptarchive/dists/unstable/main/binary-i386/Packages '+1hour' + compressfile "$1" +} +restorefile() { + mv "${1}.bak" "$1" + mv "${1}.gz.bak" "${1}.gz" +} + +testrun() { + rm -rf aptarchive/dists.good + cp -a aptarchive/dists aptarchive/dists.good + insertpackage 'unstable' 'bar' 'all' '1.0' + insertsource 'unstable' 'bar' 'all' '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 + testfileequal "$1" "$(listcurrentlistsdirectory)" + + # signed but broken + signreleasefiles + + onehashbroken() { + testfailure aptget update + # 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 + onehashbroken "$1" + restorefile aptarchive/dists/unstable/main/binary-i386/Packages + + breakfile aptarchive/dists/unstable/main/source/Sources + 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" + rm -rf rootdir/var/lib/apt/lists + mkdir -p rootdir/var/lib/apt/lists/partial + listcurrentlistsdirectory > listsdir.lst + testrun 'listsdir.lst' + + msgmsg 'Test with initial data over' "$1" + rm -rf rootdir/var/lib/apt/lists + testsuccess aptget update -o Debug::pkgAcquire::Worker=1 + listcurrentlistsdirectory > listsdir.lst + testrun 'listsdir.lst' +} + +testsetup 'file' + +changetowebserver +webserverconfig 'aptwebserver::support::modified-since' 'false' "$1" +webserverconfig 'aptwebserver::support::last-modified' 'false' "$1" # curl is clever and sees hits here also +webserverconfig 'aptwebserver::support::range' 'false' "$1" + +testsetup 'http' -# ensure that a update will only succeed entirely or not at all -testfailure aptget update -testequal "partial" ls rootdir/var/lib/apt/lists +changetohttpswebserver +testsetup 'https'