]> git.saurik.com Git - apt.git/blob - test/integration/test-apt-update-filesize-mismatch
promote filesize to a hashstring
[apt.git] / test / integration / test-apt-update-filesize-mismatch
1 #!/bin/sh
2 set -e
3
4 TESTDIR=$(readlink -f $(dirname $0))
5 . $TESTDIR/framework
6 setupenvironment
7 configarchitecture 'i386'
8 configcompression 'gz'
9
10 insertpackage 'testing' 'foo' 'all' '1'
11 insertpackage 'testing' 'foo2' 'all' '1'
12 insertsource 'testing' 'foo' 'all' '1'
13 insertsource 'testing' 'foo2' 'all' '1'
14
15 setupaptarchive --no-update
16 changetowebserver
17
18 find aptarchive \( -name 'Packages' -o -name 'Sources' -o -name 'Translation-en' \) -delete
19 for release in $(find aptarchive -name 'Release'); do
20 cp "$release" "${release}.backup"
21 done
22
23 testsuccess aptget update
24 testsuccess aptcache show foo
25 testsuccess aptget install foo -s
26
27 for get in $(sed -n 's#^GET /\([^ ]\+\.gz\) HTTP.\+$#\1#p' aptarchive/webserver.log); do
28 for ext in '' '.gz'; do
29 COMPRESSFILE="$get"
30 get="${get}${ext}"
31 FILE="$(basename -s '.gz' "$get")"
32 msgmsg 'Test filesize mismatch with file' "$FILE"
33 rm -rf rootdir/var/lib/apt/lists
34
35 for release in $(find aptarchive -name 'Release'); do
36 SIZE="$(awk "/$FILE\$/ { print \$2; exit }" "${release}.backup")"
37 sed "s# $SIZE # $(($SIZE + 111)) #" "${release}.backup" > "$release"
38 done
39 signreleasefiles
40
41 TEST='testfailure'
42 if expr match "$COMPRESSFILE" '^.*Translation-.*$' >/dev/null; then
43 TEST='testsuccess'
44 unset COMPRESSFILE
45 fi
46 $TEST aptget update -o Debug::pkgAcquire::Worker=1
47 cp rootdir/tmp/${TEST}.output rootdir/tmp/update.output
48 testsuccess grep -E "$(basename -s '.gz' "$COMPRESSFILE").*Hash Sum mismatch" rootdir/tmp/update.output
49 $TEST aptcache show foo
50 $TEST aptget install foo -s
51
52 testfailure aptcache show bar
53 testfailure aptget install bar -s
54 done
55 done