summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/integration/framework1
-rwxr-xr-xtest/integration/test-ubuntu-bug34638632
2 files changed, 31 insertions, 2 deletions
diff --git a/test/integration/framework b/test/integration/framework
index 8f37d4a03..d15fd0e01 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -688,6 +688,7 @@ signreleasefiles() {
}
changetowebserver() {
+
if [ -n "$1" ] && ! test -x ${BUILDDIRECTORY}/aptwebserver; then
msgdie 'Need the aptwebserver when passing arguments'
fi
diff --git a/test/integration/test-ubuntu-bug346386 b/test/integration/test-ubuntu-bug346386
index a5f502853..1fbfb5ca4 100755
--- a/test/integration/test-ubuntu-bug346386
+++ b/test/integration/test-ubuntu-bug346386
@@ -1,6 +1,24 @@
#!/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
@@ -13,7 +31,17 @@ setupaptarchive
changetowebserver --simulate-paywall
rm -rf rootdir/var/lib/apt/lists
-aptget update
-testequal 'partial' "$(ls rootdir/var/lib/apt/lists/)"
+if aptget update -qq 2>/dev/null; then
+ msgfail "excpected apt-get update failure"
+fi
+ensure_n_canary_strings_in_dir rootdir/var/lib/apt/lists/ "ni ni ni" 0
+testequal 'partial' ls rootdir/var/lib/apt/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}
+done
+# this will fail, the important part is that the canaries remain
+aptget update -qq 2>/dev/null || true
+ensure_n_canary_strings_in_dir rootdir/var/lib/apt/lists/ "canary" 4