1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/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() {
- mv "${1}" "${1}.bak"
- mv "${1}.gz" "${1}.gz.bak"
- cat > "$1" <<EOF
- Package: bar
- EOF
- 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' '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'
|