diff options
Diffstat (limited to 'test/integration/test-apt-update-transactions')
-rwxr-xr-x | test/integration/test-apt-update-transactions | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/integration/test-apt-update-transactions b/test/integration/test-apt-update-transactions new file mode 100755 index 000000000..fe352c762 --- /dev/null +++ b/test/integration/test-apt-update-transactions @@ -0,0 +1,67 @@ +#!/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' + +insertpackage 'unstable' 'foo' 'all' '1.0' +insertsource 'unstable' 'foo' 'all' '1.0' + +setupaptarchive --no-update + +breakfile() { + mv "$1" "${1}.bak" + cat > "$1" <<EOF +Package: bar +EOF + compressfile "$1" +} +restorefile() { + mv "${1}.bak" "$1" +} + +testrun() { + # 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 + + breakfile aptarchive/dists/unstable/main/binary-i386/Packages + testfailure aptget update + testfileequal "$1" "$(listcurrentlistsdirectory)" + restorefile aptarchive/dists/unstable/main/binary-i386/Packages + + breakfile aptarchive/dists/unstable/main/source/Sources + testfailure aptget update + testfileequal "$1" "$(listcurrentlistsdirectory)" + restorefile aptarchive/dists/unstable/main/source/Sources +} + +testsetup() { + msgmsg 'Test with no initial data over' "$1" + rm -rf rootdir/var/lib/apt/lists + mkdir -m 700 -p rootdir/var/lib/apt/lists/partial + if [ "$(id -u)" = '0' ]; then + chown _apt:root rootdir/var/lib/apt/lists/partial + fi + listcurrentlistsdirectory > listsdir.lst + testrun 'listsdir.lst' + + msgmsg 'Test with initial data over' "$1" + testsuccess aptget update + listcurrentlistsdirectory > listsdir.lst + testrun 'listsdir.lst' +} + +testsetup 'file' +changetowebserver +testsetup 'http' + |