]> git.saurik.com Git - apt.git/blob - test/integration/test-apt-update-failure-propagation
eda9cff9902cf48590e0fe9c1243374f253af6b1
[apt.git] / test / integration / test-apt-update-failure-propagation
1 #!/bin/sh
2 set -e
3
4 TESTDIR="$(readlink -f "$(dirname "$0")")"
5 . "$TESTDIR/framework"
6 setupenvironment
7 configarchitecture 'amd64'
8
9 buildsimplenativepackage 'foo' 'all' '1' 'stable'
10 buildsimplenativepackage 'foo' 'all' '2' 'sid'
11 setupaptarchive --no-update
12
13 NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
14 OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
15 rm "$NEWMETHODS"
16 mkdir "$NEWMETHODS"
17 backupIFS="$IFS"
18 IFS="$(printf "\n\b")"
19 for METH in $(find "$OLDMETHODS" ! -type d); do
20 ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
21 done
22 IFS="$backupIFS"
23
24 changetohttpswebserver
25 for FILE in rootdir/etc/apt/sources.list.d/*-sid-* ; do
26 sed -i -e 's#https:#http:#' -e "s#:${APTHTTPSPORT}/#:${APTHTTPPORT}/#" "$FILE"
27 done
28
29 pretest() {
30 rm -rf rootdir/var/lib/apt/lists
31 testsuccessequal 'N: Unable to locate package foo' aptcache policy foo -q=0
32 }
33 pretest
34 testsuccess aptget update
35 testsuccessequal "foo:
36 Installed: (none)
37 Candidate: 2
38 Version table:
39 2 500
40 500 http://localhost:${APTHTTPPORT} sid/main all Packages
41 1 500
42 500 https://localhost:${APTHTTPSPORT} stable/main all Packages" aptcache policy foo
43
44 pretest
45 mv aptarchive/dists/stable aptarchive/dists/stable.good
46 testfailuremsg "E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file." apt update
47 testfailure aptget update -q=0 --no-allow-insecure-repositories
48 testequalor2 "Hit:1 http://localhost:${APTHTTPPORT} sid InRelease
49 Ign:2 https://localhost:${APTHTTPSPORT} stable InRelease
50 404 Not Found
51 Err:3 https://localhost:${APTHTTPSPORT} stable Release
52 404 Not Found
53 Reading package lists...
54 E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
55 N: Updating such a repository securily is impossible and therefore disabled by default.
56 N: See apt-secure(8) manpage for repository creation and user configuration details." "Ign:1 https://localhost:${APTHTTPSPORT} stable InRelease
57 404 Not Found
58 Err:2 https://localhost:${APTHTTPSPORT} stable Release
59 404 Not Found
60 Hit:3 http://localhost:${APTHTTPPORT} sid InRelease
61 Reading package lists...
62 E: The repository 'https://localhost:${APTHTTPSPORT} stable Release' does not have a Release file.
63 N: Updating such a repository securily is impossible and therefore disabled by default.
64 N: See apt-secure(8) manpage for repository creation and user configuration details." cat rootdir/tmp/testfailure.output
65
66 mv aptarchive/dists/stable.good aptarchive/dists/stable
67 posttest() {
68 testsuccessequal "foo:
69 Installed: (none)
70 Candidate: 2
71 Version table:
72 2 500
73 500 http://localhost:${APTHTTPPORT} sid/main all Packages" aptcache policy foo
74 }
75 posttest
76
77 pretest
78 rm "${NEWMETHODS}/https"
79 testfailuremsg "E: The method driver ${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods/https could not be found.
80 W: Failed to fetch https://localhost:${APTHTTPSPORT}/dists/stable/InRelease
81 E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
82 posttest
83
84 ln -s "$OLDMETHODS/https" "$NEWMETHODS"
85 pretest
86 for FILE in rootdir/etc/apt/sources.list.d/*-stable-* ; do
87 # lets see how many testservers run also Doom
88 sed -i -e "s#:${APTHTTPSPORT}/#:666/#" "$FILE"
89 done
90 testwarningmsg "W: Failed to fetch https://localhost:666/dists/stable/InRelease Failed to connect to localhost port 666: Connection refused
91 W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
92 posttest