]> git.saurik.com Git - apt.git/blob - test/integration/test-policy-pinning
Merge branch 'debian/experimental' into feature/srv-records
[apt.git] / test / integration / test-policy-pinning
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 testequalpolicycoolstuff() {
87 local INSTALLED="${1:-(none)}"
88 local CANDIDATE="${2:-(none)}"
89 local AB="$3"
90 local AS="$4"
91 local PB="$5"
92 local PINVERSION="$6"
93 if [ -n "$PINVERSION" ]; then
94 PINVERSION="Package pin: $PINVERSION
95 "
96 fi
97 local IS=""
98 local IB=""
99 local SB=""
100 local SS=""
101 [ "$1" = "2.0~bpo1" ] && IB="***" && SB="
102 100 $STATUS" || IB=" "
103 [ "$1" = "1.0" ] && IS="***" && SS="
104 100 $STATUS" || IS=" "
105 local BPO1ARCHIVE=""
106 local BPO2ARCHIVE=""
107 if [ ! "$7" = "2.0~bpo2" ]; then
108 BPO1ARCHIVE=" $(echo "$AB" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE}/ backports/main i386 Packages"
109 else
110 BPO2ARCHIVE="
111 2.0~bpo2 $PB
112 $(echo "$AB" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE}/ backports/main i386 Packages"
113 SB="$(echo "$SB" | tail -n 1)"
114 shift
115 fi
116 shift 6
117 testsuccessequal "coolstuff:
118 Installed: $INSTALLED
119 Candidate: $CANDIDATE
120 ${PINVERSION}Version table:${BPO2ARCHIVE}
121 $IB 2.0~bpo1 $PB
122 ${BPO1ARCHIVE}$SB
123 $IS 1.0 $PB
124 $(echo "$AS" | awk '{ printf("%3s\n",$0) }') file:${APTARCHIVE}/ stable/main i386 Packages$SS" \
125 aptcache policy coolstuff -o Policy=${INSTALLED}-${CANDIDATE}-${AB}-${AS}-${PB} $*
126 }
127
128 testequalpolicycoolstuff "" "2.0~bpo1" 500 500 0 ""
129 testequalpolicycoolstuff "" "1.0" 500 990 0 "" -t stable
130 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 0 "" -t backports
131 echo "Package: *
132 Pin: release n=backports
133 Pin-Priority: 200" > rootdir/etc/apt/preferences
134 testequalpolicycoolstuff "" "1.0" 200 500 0 "" -o Test=GlobalPin
135 testequalpolicycoolstuff "" "1.0" 200 990 0 "" -o Test=GlobalPin -t stable
136 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 0 "" -o Test=GlobalPin -t backports
137 echo "Package: *
138 Pin: release n=backports
139 Pin-Priority: 600" > rootdir/etc/apt/preferences
140 testequalpolicycoolstuff "" "2.0~bpo1" 600 500 0 "" -o Test=GlobalPin
141 testequalpolicycoolstuff "" "1.0" 600 990 0 "" -o Test=GlobalPin -t stable
142 echo "Package: coolstuff
143 Pin: release n=backports
144 Pin-Priority: 200" > rootdir/etc/apt/preferences
145 #FIXME: policy can't differentiate between two sources where one has a package specific pin in place
146 # testequalpolicycoolstuff "" "1.0" 500 500 200 "2.0~bpo1" -o Test=PackagePin
147 # testequalpolicycoolstuff "" "1.0" 990 500 200 "2.0~bpo1" -o Test=PackagePin -t backports
148 testequalpolicycoolstuff "" "1.0" 500 990 200 "2.0~bpo1" -o Test=PackagePin -t stable
149 echo "Package: coolstuff
150 Pin: release n=backports
151 Pin-Priority: 600" > rootdir/etc/apt/preferences
152 testequalpolicycoolstuff "" "2.0~bpo1" 500 500 600 "2.0~bpo1" -o Test=PackagePin
153 testequalpolicycoolstuff "" "1.0" 500 990 600 "2.0~bpo1" -o Test=PackagePin -t stable
154 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=PackagePin -t backports
155
156 echo "Package: coolstuff
157 Pin: release n=backports
158 Pin-Priority: -1" > rootdir/etc/apt/preferences
159 # testequalpolicycoolstuff "" "1.0" 500 500 -1 "2.0~bpo1" -o Test=PackagePin
160 # testequalpolicycoolstuff "" "1.0" 990 500 -1 "2.0~bpo1" -o Test=PackagePin -t backports
161 # testequalpolicycoolstuff "" "1.0" 500 990 -1 "2.0~bpo1" -o Test=PackagePin -t stable
162
163 rm rootdir/etc/apt/preferences
164 sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes"
165 signreleasefiles
166 aptgetupdate
167
168 testequalpolicycoolstuff "" "1.0" 1 500 0 "" -o Test=NotAutomatic
169 testequalpolicycoolstuff "" "1.0" 1 990 0 "" -o Test=NotAutomatic -t stable
170 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 0 "" -o Test=NotAutomatic -t backports
171 echo "Package: *
172 Pin: release n=backports
173 Pin-Priority: 200" > rootdir/etc/apt/preferences
174 testequalpolicycoolstuff "" "1.0" 200 500 0 "" -o Test=NotAutomatic
175 echo "Package: *
176 Pin: release n=backports
177 Pin-Priority: 600" > rootdir/etc/apt/preferences
178 testequalpolicycoolstuff "" "2.0~bpo1" 600 500 0 "" -o Test=NotAutomatic
179 testequalpolicycoolstuff "" "1.0" 600 990 0 "" -o Test=NotAutomatic -t stable
180 echo "Package: coolstuff
181 Pin: release n=backports
182 Pin-Priority: 200" > rootdir/etc/apt/preferences
183 testequalpolicycoolstuff "" "1.0" 1 500 200 "2.0~bpo1" -o Test=NotAutomatic
184 echo "Package: coolstuff
185 Pin: release n=backports
186 Pin-Priority: 600" > rootdir/etc/apt/preferences
187 testequalpolicycoolstuff "" "2.0~bpo1" 1 500 600 "2.0~bpo1" -o Test=NotAutomatic
188 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=NotAutomatic -t backports
189 testequalpolicycoolstuff "" "1.0" 1 990 600 "2.0~bpo1" -o Test=NotAutomatic -t stable
190
191 rm rootdir/etc/apt/preferences
192 sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes"
193 signreleasefiles
194 aptgetupdate
195
196 testequalpolicycoolstuff "" "1.0" 100 500 0 "" -o Test=ButAutomaticUpgrades
197 testequalpolicycoolstuff "" "1.0" 100 990 0 "" -o Test=ButAutomaticUpgrades -t stable
198 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 0 "" -o Test=ButAutomaticUpgrades -t backports
199 echo "Package: *
200 Pin: release n=backports
201 Pin-Priority: 200" > rootdir/etc/apt/preferences
202 testequalpolicycoolstuff "" "1.0" 200 500 0 "" -o Test=ButAutomaticUpgrades
203 echo "Package: *
204 Pin: release n=backports
205 Pin-Priority: 600" > rootdir/etc/apt/preferences
206 testequalpolicycoolstuff "" "2.0~bpo1" 600 500 0 "" -o Test=ButAutomaticUpgrades
207 testequalpolicycoolstuff "" "1.0" 600 990 0 "" -o Test=ButAutomaticUpgrades -t stable
208 echo "Package: coolstuff
209 Pin: release n=backports
210 Pin-Priority: 200" > rootdir/etc/apt/preferences
211 testequalpolicycoolstuff "" "1.0" 100 500 200 "2.0~bpo1" -o Test=ButAutomaticUpgrades
212 echo "Package: coolstuff
213 Pin: release n=backports
214 Pin-Priority: 600" > rootdir/etc/apt/preferences
215 testequalpolicycoolstuff "" "2.0~bpo1" 100 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades
216 testequalpolicycoolstuff "" "2.0~bpo1" 990 500 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t backports
217 testequalpolicycoolstuff "" "1.0" 100 990 600 "2.0~bpo1" -o Test=ButAutomaticUpgrades -t stable
218
219 rm rootdir/etc/apt/preferences
220 testsuccess aptget install coolstuff -y
221 testequalpolicycoolstuff "1.0" "1.0" 100 500 0 "" -o Test=ButAutomaticUpgrades
222 testsuccess aptget dist-upgrade -y
223 testequalpolicycoolstuff "1.0" "1.0" 100 500 0 "" -o Test=ButAutomaticUpgrades
224 testequalpolicycoolstuff "1.0" "1.0" 100 990 0 "" -o Test=ButAutomaticUpgrades -t stable
225 testequalpolicycoolstuff "1.0" "2.0~bpo1" 990 500 0 "" -o Test=ButAutomaticUpgrades -t backports
226
227 testsuccess aptget install coolstuff -t backports -y
228 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 0 "" -o Test=ButAutomaticUpgrades
229 testsuccess aptget dist-upgrade -y
230 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 500 0 "" -o Test=ButAutomaticUpgrades
231 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 100 990 0 "" -o Test=ButAutomaticUpgrades -t stable
232 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 990 500 0 "" -o Test=ButAutomaticUpgrades -t backports
233
234 rm incoming/backports.main.pkglist incoming/backports.main.srclist
235 buildsimplenativepackage "coolstuff" "all" "2.0~bpo2" "backports"
236 setupaptarchive
237
238 sed -i aptarchive/dists/backports/Release -e 1i"NotAutomatic: yes"
239 signreleasefiles
240 aptgetupdate
241
242 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 500 0 "" "2.0~bpo2" -o Test=NotAutomatic
243 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo1" 1 990 0 "" "2.0~bpo2" -o Test=NotAutomatic -t stable
244 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 0 "" "2.0~bpo2" -o Test=NotAutomatic -t backports
245
246 sed -i aptarchive/dists/backports/Release -e 1i"ButAutomaticUpgrades: yes"
247 signreleasefiles
248 aptgetupdate
249
250 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 500 0 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades
251 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 100 990 0 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t stable
252 testequalpolicycoolstuff "2.0~bpo1" "2.0~bpo2" 990 500 0 "" "2.0~bpo2" -o Test=ButAutomaticUpgrades -t backports