]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | set -e | |
3 | ||
4 | TESTDIR="$(readlink -f "$(dirname "$0")")" | |
5 | . "$TESTDIR/framework" | |
6 | ||
7 | setupenvironment | |
8 | configarchitecture "i386" | |
9 | ||
10 | buildaptarchive | |
11 | setupflataptarchive | |
12 | ||
13 | STATUS=$(readlink -f rootdir/var/lib/dpkg/status) | |
14 | APTARCHIVE=$(readlink -f aptarchive) | |
15 | ||
16 | testequalpolicy() { | |
17 | local SP="$1" | |
18 | local AP="$2" | |
19 | shift 2 | |
20 | testsuccessequal "Package files: | |
21 | $(echo "$SP" | awk '{ printf("%3s\n",$0) }') ${STATUS} | |
22 | release a=now | |
23 | $(echo "$AP" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} Packages | |
24 | release c= | |
25 | Pinned packages:" aptcache policy "$@" | |
26 | } | |
27 | ||
28 | testglobalpolicy() { | |
29 | aptgetupdate | |
30 | ||
31 | testequalpolicy 100 500 | |
32 | testequalpolicy 990 500 -t now | |
33 | ||
34 | sed -i aptarchive/Release -e 1i"NotAutomatic: yes" | |
35 | aptgetupdate | |
36 | ||
37 | testequalpolicy 100 1 -o Test=NotAutomatic | |
38 | testequalpolicy 990 1 -o Test=NotAutomatic -t now | |
39 | ||
40 | sed -i aptarchive/Release -e 1i"ButAutomaticUpgrades: yes" | |
41 | aptgetupdate | |
42 | ||
43 | testequalpolicy 100 100 -o Test=ButAutomaticUpgrades | |
44 | testequalpolicy 990 100 -o Test=ButAutomaticUpgrades -t now | |
45 | ||
46 | sed -i aptarchive/Release -e 's#NotAutomatic: yes#NotAutomatic: no#' -e '/ButAutomaticUpgrades: / d' | |
47 | aptgetupdate | |
48 | ||
49 | testequalpolicy 100 500 -o Test=Automatic | |
50 | testequalpolicy 990 500 -o Test=Automatic -t now | |
51 | ||
52 | sed -i aptarchive/Release -e '/NotAutomatic: / d' -e '/ButAutomaticUpgrades: / d' | |
53 | } | |
54 | ||
55 | msgmsg 'Test with not signed archive' | |
56 | aptgetupdate() { | |
57 | rm -rf rootdir/var/lib/apt | |
58 | testwarning aptget update --allow-insecure-repositories | |
59 | } | |
60 | testglobalpolicy | |
61 | ||
62 | msgmsg 'Test with signed but no key in trusted' | |
63 | aptgetupdate() { | |
64 | rm -rf rootdir/var/lib/apt | |
65 | signreleasefiles 'Marvin Paranoid' | |
66 | testwarning aptget update --allow-insecure-repositories | |
67 | } | |
68 | testglobalpolicy | |
69 | ||
70 | # much the same tests will be executed below in more detail again for this one | |
71 | msgmsg 'Test with signed and valid key' | |
72 | aptgetupdate() { | |
73 | rm -rf rootdir/var/lib/apt | |
74 | signreleasefiles 'Joe Sixpack' | |
75 | testsuccess aptget update | |
76 | } | |
77 | testglobalpolicy | |
78 | ||
79 | msgmsg 'Test with specific packages' | |
80 | ||
81 | buildsimplenativepackage "coolstuff" "all" "1.0" "stable" | |
82 | buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports" | |
83 | ||
84 | setupaptarchive | |
85 | ||
86 | testsuccessequal "coolstuff: | |
87 | Installed: (none) | |
88 | Candidate: 2.0~bpo1 | |
89 | Version table: | |
90 | 2.0~bpo1 500 | |
91 | 500 file:${APTARCHIVE} backports/main all Packages | |
92 | 1.0 500 | |
93 | 500 file:${APTARCHIVE} stable/main all Packages" apt policy '^cool.*' | |
94 | ||
95 | testequalpolicycoolstuff() { | |
96 | local INSTALLED="${1:-(none)}" | |
97 | local CANDIDATE="${2:-(none)}" | |
98 | local AB="$3" | |
99 | local AS="$4" | |
100 | local PB="$5" | |
101 | local IS="" | |
102 | local IB="" | |
103 | local SB="" | |
104 | local SS="" | |
105 | [ "$1" = "2.0~bpo1" ] && IB="***" && SB=" | |
106 | 100 $STATUS" || IB=" " | |
107 | [ "$1" = "1.0" ] && IS="***" && SS=" | |
108 | 100 $STATUS" || IS=" " | |
109 | local BPO1ARCHIVE="" | |
110 | local BPO2ARCHIVE="" | |
111 | if [ ! "$7" = "2.0~bpo2" ]; then | |
112 | BPO1PIN="$AB" | |
113 | BPO1ARCHIVE=" $(echo "$AB" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} backports/main all Packages" | |
114 | else | |
115 | BPO2ARCHIVE=" | |
116 | 2.0~bpo2 $AB | |
117 | $(echo "$AB" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} backports/main all Packages" | |
118 | SB="$(echo "$SB" | tail -n 1)" | |
119 | shift | |
120 | fi | |
121 | shift 6 | |
122 | testsuccessequal "coolstuff: | |
123 | Installed: $INSTALLED | |
124 | Candidate: $CANDIDATE | |
125 | Version table:${BPO2ARCHIVE} | |
126 | $IB 2.0~bpo1 $PB | |
127 | ${BPO1ARCHIVE}$SB | |
128 | $IS 1.0 $AS | |
129 | $(echo "$AS" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE} stable/main all Packages$SS" \ | |
130 | aptcache policy coolstuff -o Policy=${INSTALLED}-${CANDIDATE}-${AB}-${AS}-${PB} $* | |
131 | } | |
132 | ||
133 | testequalpolicycoolstuff "" "2.0~bpo1" 500 500 500 "" | |
134 | testequalpolicycoolstuff "" "1.0" 500 990 500 "" -t stable | |
135 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -t backports | |
136 | echo "Package: * | |
137 | Pin: release n=backports | |
138 | Pin-Priority: 200" > rootdir/etc/apt/preferences | |
139 | testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=GlobalPin | |
140 | testequalpolicycoolstuff "" "1.0" 200 990 200 "" -o Test=GlobalPin -t stable | |
141 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=GlobalPin -t backports | |
142 | echo "Package: * | |
143 | Pin: release n=backports | |
144 | Pin-Priority: 600" > rootdir/etc/apt/preferences | |
145 | testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=GlobalPin | |
146 | testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=GlobalPin -t stable | |
147 | echo "Package: coolstuff | |
148 | Pin: release n=backports | |
149 | Pin-Priority: 200" > rootdir/etc/apt/preferences | |
150 | #FIXME: policy can't differentiate between two sources where one has a package specific pin in place | |
151 | # testequalpolicycoolstuff "" "1.0" 500 500 200 "2.0~bpo1" -o Test=PackagePin | |
152 | # testequalpolicycoolstuff "" "1.0" 990 500 200 "2.0~bpo1" -o Test=PackagePin -t backports | |
153 | testequalpolicycoolstuff "" "1.0" 500 990 200 "2.0~bpo1" -o Test=PackagePin -t stable | |
154 | echo "Package: coolstuff | |
155 | Pin: release n=backports | |
156 | Pin-Priority: 600" > rootdir/etc/apt/preferences | |
157 | testequalpolicycoolstuff "" "2.0~bpo1" 500 500 600 "2.0~bpo1" -o Test=PackagePin | |
158 | testequalpolicycoolstuff "" "1.0" 500 990 600 "2.0~bpo1" -o Test=PackagePin -t stable | |
159 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=PackagePin -t backports | |
160 | ||
161 | echo "Package: coolstuff | |
162 | Pin: release n=backports | |
163 | Pin-Priority: -1" > rootdir/etc/apt/preferences | |
164 | # testequalpolicycoolstuff "" "1.0" 500 500 -1 "2.0~bpo1" -o Test=PackagePin | |
165 | # testequalpolicycoolstuff "" "1.0" 990 500 -1 "2.0~bpo1" -o Test=PackagePin -t backports | |
166 | # testequalpolicycoolstuff "" "1.0" 500 990 -1 "2.0~bpo1" -o Test=PackagePin -t stable | |
167 | ||
168 | rm rootdir/etc/apt/preferences | |
169 | sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes" | |
170 | signreleasefiles | |
171 | aptgetupdate | |
172 | ||
173 | testequalpolicycoolstuff "" "1.0" 1 500 1 "" -o Test=NotAutomatic | |
174 | testequalpolicycoolstuff "" "1.0" 1 990 1 "" -o Test=NotAutomatic -t stable | |
175 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=NotAutomatic -t backports | |
176 | echo "Package: * | |
177 | Pin: release n=backports | |
178 | Pin-Priority: 200" > rootdir/etc/apt/preferences | |
179 | testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=NotAutomatic | |
180 | echo "Package: * | |
181 | Pin: release n=backports | |
182 | Pin-Priority: 600" > rootdir/etc/apt/preferences | |
183 | testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=NotAutomatic | |
184 | testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=NotAutomatic -t stable | |
185 | echo "Package: coolstuff | |
186 | Pin: release n=backports | |
187 | Pin-Priority: 200" > rootdir/etc/apt/preferences | |
188 | testequalpolicycoolstuff "" "1.0" 1 500 200 "2.0~bpo1" -o Test=NotAutomatic | |
189 | echo "Package: coolstuff | |
190 | Pin: release n=backports | |
191 | Pin-Priority: 600" > rootdir/etc/apt/preferences | |
192 | testequalpolicycoolstuff "" "2.0~bpo1" 1 500 600 "2.0~bpo1" -o Test=NotAutomatic | |
193 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=NotAutomatic -t backports | |
194 | testequalpolicycoolstuff "" "1.0" 1 990 600 "2.0~bpo1" -o Test=NotAutomatic -t stable | |
195 | ||
196 | rm rootdir/etc/apt/preferences | |
197 | sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes" | |
198 | signreleasefiles | |
199 | aptgetupdate | |
200 | ||
201 | testequalpolicycoolstuff "" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades | |
202 | testequalpolicycoolstuff "" "1.0" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable | |
203 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports | |
204 | echo "Package: * | |
205 | Pin: release n=backports | |
206 | Pin-Priority: 200" > rootdir/etc/apt/preferences | |
207 | testequalpolicycoolstuff "" "1.0" 200 500 200 "" -o Test=ButAutomaticUpgrades | |
208 | echo "Package: * | |
209 | Pin: release n=backports | |
210 | Pin-Priority: 600" > rootdir/etc/apt/preferences | |
211 | testequalpolicycoolstuff "" "2.0~bpo1" 600 500 600 "" -o Test=ButAutomaticUpgrades | |
212 | testequalpolicycoolstuff "" "1.0" 600 990 600 "" -o Test=ButAutomaticUpgrades -t stable | |
213 | echo "Package: coolstuff | |
214 | Pin: release n=backports | |
215 | Pin-Priority: 200" > rootdir/etc/apt/preferences | |
216 | testequalpolicycoolstuff "" "1.0" 100 500 200 "2.0~bpo1" -o Test=ButAutomaticUpgrades | |
217 | echo "Package: coolstuff | |
218 | Pin: release n=backports | |
219 | Pin-Priority: 600" > rootdir/etc/apt/preferences | |
220 | testequalpolicycoolstuff "" "2.0~bpo1" 100 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades | |
221 | testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t backports | |
222 | testequalpolicycoolstuff "" "1.0" 100 990 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t stable | |
223 | ||
224 | rm rootdir/etc/apt/preferences | |
225 | testsuccess aptget install coolstuff -y | |
226 | testequalpolicycoolstuff "1.0" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades | |
227 | testsuccess aptget dist-upgrade -y | |
228 | testequalpolicycoolstuff "1.0" "1.0" 100 500 100 "" -o Test=ButAutomaticUpgrades | |
229 | testequalpolicycoolstuff "1.0" "1.0" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable | |
230 | testequalpolicycoolstuff "1.0" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports | |
231 | ||
232 | testsuccess aptget install coolstuff -t backports -y | |
233 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 100 "" -o Test=ButAutomaticUpgrades | |
234 | testsuccess aptget dist-upgrade -y | |
235 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 100 "" -o Test=ButAutomaticUpgrades | |
236 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 990 100 "" -o Test=ButAutomaticUpgrades -t stable | |
237 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 990 500 990 "" -o Test=ButAutomaticUpgrades -t backports | |
238 | ||
239 | rm incoming/backports.main.pkglist incoming/backports.main.srclist | |
240 | buildsimplenativepackage "coolstuff" "all" "2.0~bpo2" "backports" | |
241 | setupaptarchive | |
242 | ||
243 | sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes" | |
244 | signreleasefiles | |
245 | aptgetupdate | |
246 | ||
247 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 500 100 "" "2.0~bpo2" -o Test=NotAutomatic | |
248 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 990 100 "" "2.0~bpo2" -o Test=NotAutomatic -t stable | |
249 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 100 "" "2.0~bpo2" -o Test=NotAutomatic -t backports | |
250 | ||
251 | sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes" | |
252 | signreleasefiles | |
253 | aptgetupdate | |
254 | ||
255 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 500 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades | |
256 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 990 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t stable | |
257 | testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 100 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t backports | |
258 | ||
259 | ||
260 | tmppath=$(readlink -f .) | |
261 | ||
262 | # Check 16-bit integers | |
263 | echo "Package: coolstuff | |
264 | Pin: release n=backports | |
265 | Pin-Priority: 32767 | |
266 | " > rootdir/etc/apt/preferences | |
267 | ||
268 | testsuccess aptget install -s coolstuff -o PinPriority=32767 | |
269 | ||
270 | echo "Package: coolstuff | |
271 | Pin: release n=backports | |
272 | Pin-Priority: -32768 | |
273 | " > rootdir/etc/apt/preferences | |
274 | testsuccess aptget install -s coolstuff -o PinPriority=-32768 | |
275 | ||
276 | # Check for 32-bit integers | |
277 | echo "Package: coolstuff | |
278 | Pin: release n=backports | |
279 | Pin-Priority: 32768 | |
280 | " > rootdir/etc/apt/preferences | |
281 | ||
282 | testfailureequal "Reading package lists... | |
283 | E: ${tmppath}/rootdir/etc/apt/preferences: Value 32768 is outside the range of valid pin priorities (-32768 to 32767)" \ | |
284 | aptget install -s coolstuff -o PinPriority=32768 | |
285 | ||
286 | ||
287 | echo "Package: coolstuff | |
288 | Pin: release n=backports | |
289 | Pin-Priority: -32769 | |
290 | " > rootdir/etc/apt/preferences | |
291 | ||
292 | testfailureequal "Reading package lists... | |
293 | E: ${tmppath}/rootdir/etc/apt/preferences: Value -32769 is outside the range of valid pin priorities (-32768 to 32767)" \ | |
294 | aptget install -s coolstuff -o PinPriority=-32769 | |
295 | ||
296 | # Check for 64-bit integers | |
297 | ||
298 | echo "Package: coolstuff | |
299 | Pin: release n=backports | |
300 | Pin-Priority: 2147483648 | |
301 | " > rootdir/etc/apt/preferences | |
302 | ||
303 | testfailureequal "Reading package lists... | |
304 | E: Cannot convert 2147483648 to integer: out of range | |
305 | E: ${tmppath}/rootdir/etc/apt/preferences: Value 2147483648 is outside the range of valid pin priorities (-32768 to 32767)" \ | |
306 | aptget install -s coolstuff -o PinPriority=2147483648 | |
307 | ||
308 | # Check that short-max/min is a valid pin | |
309 | currentpin() { | |
310 | echo "Package: * | |
311 | Pin: release n=backports | |
312 | Pin-Priority: $1 | |
313 | " > rootdir/etc/apt/preferences | |
314 | testsuccessequal "coolstuff: | |
315 | Installed: 2.0~bpo1 | |
316 | Candidate: $2 | |
317 | Version table: | |
318 | 2.0~bpo2 $1 | |
319 | $1 file:${tmppath}/aptarchive backports/main all Packages | |
320 | *** 2.0~bpo1 100 | |
321 | 100 ${tmppath}/rootdir/var/lib/dpkg/status | |
322 | 1.0 500 | |
323 | 500 file:${tmppath}/aptarchive stable/main all Packages" apt policy coolstuff | |
324 | } | |
325 | currentpin '32767' '2.0~bpo2' | |
326 | currentpin '-32768' '2.0~bpo1' | |
327 | ||
328 | # Check for 0 | |
329 | echo "Package: coolstuff | |
330 | Pin: release n=backports | |
331 | Pin-Priority: 0 | |
332 | " > rootdir/etc/apt/preferences | |
333 | ||
334 | testfailureequal "Reading package lists... | |
335 | E: No priority (or zero) specified for pin" \ | |
336 | aptget install -s coolstuff -o PinPriority=0 | |
337 | ||
338 | # Check with comments | |
339 | echo "#Package: coolstuff | |
340 | #Pin: release n=backports | |
341 | #Pin-Priority: 0 | |
342 | ||
343 | # Test | |
344 | ||
345 | Package: coolstuff | |
346 | Pin: release n=backports | |
347 | #Pin: release n=unstable | |
348 | #Pin-Priority: 999 | |
349 | Pin-Priority: 999 | |
350 | #Pin-Priority: 999" > rootdir/etc/apt/preferences | |
351 | ||
352 | testsuccessequal "coolstuff: | |
353 | Installed: 2.0~bpo1 | |
354 | Candidate: 2.0~bpo2 | |
355 | Version table: | |
356 | 2.0~bpo2 999 | |
357 | 100 file:${tmppath}/aptarchive backports/main all Packages | |
358 | *** 2.0~bpo1 100 | |
359 | 100 ${tmppath}/rootdir/var/lib/dpkg/status | |
360 | 1.0 500 | |
361 | 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff |