diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:00:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:00:48 +0000 |
commit | 851b6a097165af4d51c0db01b5e05256e5006896 (patch) | |
tree | 5f7c388ec894a7806c49a99f3bdb605d0b299a7c /test/integration/test-apt-update-transactions | |
parent | Initial commit. (diff) | |
download | apt-851b6a097165af4d51c0db01b5e05256e5006896.tar.xz apt-851b6a097165af4d51c0db01b5e05256e5006896.zip |
Adding upstream version 2.6.1.upstream/2.6.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rwxr-xr-x | test/integration/test-apt-update-transactions | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions new file mode 100755 index 0000000..1f30d77 --- /dev/null +++ b/test/integration/test-apt-update-transactions @@ -0,0 +1,85 @@ +#!/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' +configcompression '.' 'gz' + +insertpackage 'unstable' 'foo' 'i386' '1.0' +insertsource 'unstable' 'foo' 'i386' '1.0' + +setupaptarchive --no-update + +breakfile() { + breakfiles "$1" "${1}.gz" +} +restorefile() { + unbreakfiles "$1" "${1}.gz" +} + +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 + testfileequal "$1" "$(listcurrentlistsdirectory)" + + # 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 + 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::response-header::Accept-Ranges' 'none' "$1" + +testsetup 'http' + +changetohttpswebserver + +testsetup 'https' |