X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/52d5690b47bd4efe425fa23d9f6559bb44324cd1..51818f26c784bb574dafc545e8ae320845e5e8fc:/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall diff --git a/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall b/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall index 25cccf067..983889f92 100755 --- a/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall +++ b/test/integration/test-ubuntu-bug-346386-apt-get-update-paywall @@ -1,23 +1,6 @@ #!/bin/sh set -e -ensure_n_canary_strings_in_dir() { - DIR=$1 - CANARY_STRING=$2 - EXPECTED_N=$3 - - msgtest "Testing for $EXPECTED_N canary strings '$CANARY_STRING' in in" "$DIR" - - N=$(grep "$CANARY_STRING" $DIR/* 2>/dev/null |wc -l ) - if [ "$N" = "$EXPECTED_N" ]; then - msgpass - return 0 - else - msgfail "Expected $EXPECTED_N canaries, got $N" - return 1 - fi -} - TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework @@ -25,23 +8,60 @@ setupenvironment configarchitecture 'native' insertpackage 'unstable' 'unrelated' 'all' '1.0' 'stable' +insertsource 'unstable' 'unrelated' 'all' '1.0' 'stable' + +echo 'ni ni ni' > aptarchive/knights setupaptarchive -changetowebserver --simulate-paywall +changetowebserver -o 'aptwebserver::overwrite::.*::filename=/knights' + +msgtest 'Acquire test file from the webserver to check' 'overwrite' +if downloadfile http://localhost:${APTHTTPPORT}/holygrail ./knights-talking >/dev/null; then + msgpass +else + msgfail +fi + +testfileequal knights-talking 'ni ni ni' + +ensure_n_canary_strings_in_dir() { + local DIR="$1" + local CANARY_STRING="$2" + local EXPECTED_N="$3" + + msgtest "Testing in $DIR for $EXPECTED_N canary" "$CANARY_STRING" + local N=$(grep "$CANARY_STRING" $DIR/* 2>/dev/null |wc -l ) + test "$N" = "$EXPECTED_N" && msgpass || msgfail "Expected $EXPECTED_N canaries, got $N" +} +LISTS='rootdir/var/lib/apt/lists' rm -rf rootdir/var/lib/apt/lists -msgtest 'excpected failure of' 'apt-get update' -aptget update -qq 2>/dev/null && msgfail || msgpass +testfailure aptget update +testsuccess grep '^W:.*Clearsigned file .*NOSPLIT.*' rootdir/tmp/testfailure.output -ensure_n_canary_strings_in_dir rootdir/var/lib/apt/lists/ 'ni ni ni' 0 -testequal 'partial' ls rootdir/var/lib/apt/lists/ +ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0 +testequal 'lock +partial' ls "$LISTS" -# again, this time with pre-existing files valid data -for f in Release Release.gpg main_binary-amd64_Packages stable_main_source_Sources; do - echo "canary" > rootdir/var/lib/apt/lists/localhost:8080_dists_stable_${f} +# and again with pre-existing files with "valid data" which should remain +for f in Release Release.gpg main_binary-amd64_Packages main_source_Sources; do + echo 'peng neee-wom' > "$LISTS/localhost:${APTHTTPPORT}_dists_stable_${f}" + chmod 644 "$LISTS/localhost:${APTHTTPPORT}_dists_stable_${f}" done -# this will fail, the important part is that the canaries remain +testfailure aptget update +testsuccess grep '^W:.*Clearsigned file .*NOSPLIT.*' rootdir/tmp/testfailure.output + +ensure_n_canary_strings_in_dir "$LISTS" 'peng neee-wom' 4 +ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0 + +# and now with a pre-existing InRelease file +echo 'peng neee-wom' > "$LISTS/localhost:${APTHTTPPORT}_dists_stable_InRelease" +chmod 644 "$LISTS/localhost:${APTHTTPPORT}_dists_stable_InRelease" +rm -f "$LISTS/localhost:${APTHTTPPORT}_dists_stable_Release" "$LISTS/localhost:${APTHTTPPORT}_dists_stable_Release.gpg" msgtest 'excpected failure of' 'apt-get update' -aptget update -qq 2>/dev/null && msgfail || msgpass -ensure_n_canary_strings_in_dir rootdir/var/lib/apt/lists/ 'canary' 4 +testfailure aptget update +testsuccess grep '^W:.*Clearsigned file .*NOSPLIT.*' rootdir/tmp/testfailure.output + +ensure_n_canary_strings_in_dir "$LISTS" 'peng neee-wom' 3 +ensure_n_canary_strings_in_dir "$LISTS" 'ni ni ni' 0