Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/tests/frontend/conflicts-multirepo.sh
2065 views
1
#! /usr/bin/env atf-sh
2
. $(atf_get_srcdir)/test_environment.sh
3
4
tests_init \
5
conflicts_multirepo \
6
conflicts_multirepo_cycle
7
8
conflicts_multirepo_head() {
9
atf_set "timeout" "40"
10
}
11
12
conflicts_multirepo_body() {
13
touch a b c
14
cat << EOF >> manifest
15
name: test
16
origin: test
17
version: 1
18
maintainer: test
19
categories: [test]
20
comment: a test
21
www: http://test
22
prefix: /
23
abi = "*";
24
desc: <<EOD
25
Yet another test
26
EOD
27
files: {
28
${TMPDIR}/a: "",
29
}
30
EOF
31
32
cat << EOF >> manifest2
33
name: test2
34
origin: test
35
version: 1
36
maintainer: test
37
categories: [test]
38
comment: a test
39
www: http://test
40
prefix: /
41
abi = "*";
42
desc: <<EOD
43
Yet another test
44
EOD
45
files: {
46
${TMPDIR}/b: "",
47
${TMPDIR}/c: "",
48
}
49
EOF
50
51
cat << EOF >> manifest3
52
name: test
53
origin: test
54
version: "1.1"
55
maintainer: test
56
categories: [test]
57
comment: a test
58
www: http://test
59
prefix: /
60
abi = "*";
61
desc: <<EOD
62
Yet another test
63
EOD
64
files: {
65
${TMPDIR}/a: "",
66
${TMPDIR}/b: "",
67
}
68
EOF
69
70
cat << EOF >> manifest4
71
name: test2
72
origin: test
73
version: "1.1"
74
maintainer: test
75
categories: [test]
76
comment: a test
77
www: http://test
78
prefix: /
79
abi = "*";
80
desc: <<EOD
81
Yet another test
82
EOD
83
files: {
84
${TMPDIR}/c: "",
85
}
86
EOF
87
atf_check \
88
-o match:".*Installing.*\.\.\.$" \
89
-e empty \
90
-s exit:0 \
91
pkg register -M manifest
92
93
atf_check \
94
-o match:".*Installing.*\.\.\.$" \
95
-e empty \
96
-s exit:0 \
97
pkg register -M manifest2
98
99
mkdir repo1
100
atf_check \
101
-o empty \
102
-e empty \
103
-s exit:0 \
104
pkg create -M manifest -o repo1/
105
106
atf_check \
107
-o empty \
108
-e empty \
109
-s exit:0 \
110
pkg create -M manifest2 -o repo1/
111
112
mkdir repo2
113
atf_check \
114
-o empty \
115
-e empty \
116
-s exit:0 \
117
pkg create -M manifest3 -o repo2/
118
119
atf_check \
120
-o empty \
121
-e empty \
122
-s exit:0 \
123
pkg create -M manifest4 -o repo2/
124
125
atf_check \
126
-o inline:"Creating repository in repo1: done\nPacking files for repository: done\n" \
127
-e empty \
128
-s exit:0 \
129
pkg repo repo1
130
131
atf_check \
132
-o inline:"Creating repository in repo2: done\nPacking files for repository: done\n" \
133
-e empty \
134
-s exit:0 \
135
pkg repo repo2
136
137
cat << EOF >> repo.conf
138
local1: {
139
url: file:///${TMPDIR}/repo1,
140
enabled: true
141
}
142
local2: {
143
url: file:///${TMPDIR}/repo2,
144
enabled:true
145
}
146
EOF
147
148
OUTPUT="Updating local1 repository catalogue...
149
${JAILED}Fetching meta.conf: done
150
${JAILED}Fetching data.pkg: done
151
Processing entries: done
152
local1 repository update completed. 2 packages processed.
153
Updating local2 repository catalogue...
154
${JAILED}Fetching meta.conf: done
155
${JAILED}Fetching data.pkg: done
156
Processing entries: done
157
local2 repository update completed. 2 packages processed.
158
All repositories are up to date.
159
Updating database digests format: done
160
Checking for upgrades (2 candidates): done
161
Processing candidates (2 candidates): done
162
Checking integrity... done (2 conflicting)
163
- test-1.1 [local2] conflicts with test2-1 [installed] on ${TMPDIR}/b
164
- test-1.1 [local2] conflicts with test2-1 [local1] on ${TMPDIR}/b
165
Checking integrity... done (0 conflicting)
166
The following 2 package(s) will be affected (of 0 checked):
167
168
Installed packages to be UPGRADED:
169
test: 1 -> 1.1 [local2]
170
test2: 1 -> 1.1 [local2]
171
172
Number of packages to be upgraded: 2
173
${JAILED}[1/2] Upgrading test2 from 1 to 1.1...
174
${JAILED}[1/2] Extracting test2-1.1: done
175
${JAILED}[2/2] Upgrading test from 1 to 1.1...
176
${JAILED}[2/2] Extracting test-1.1: done
177
"
178
atf_check \
179
-o inline:"${OUTPUT}" \
180
-s exit:0 \
181
pkg -o CONSERVATIVE_UPGRADE=no -o REPOS_DIR="${TMPDIR}" -o PKG_CACHEDIR="${TMPDIR}" upgrade -y
182
}
183
184
conflicts_multirepo_cycle_head() {
185
atf_set "timeout" "40"
186
}
187
188
# This case is the same as conflicts_multirepo but with test2 depending on test.
189
# This added dependency creates a cycle in the job scheduling graph which requires
190
# the upgrade job for test2 to be split.
191
conflicts_multirepo_cycle_body() {
192
touch a b c
193
cat << EOF >> manifest
194
name: test
195
origin: test
196
version: 1
197
maintainer: test
198
categories: [test]
199
comment: a test
200
www: http://test
201
prefix: /
202
abi = "*";
203
desc: <<EOD
204
Yet another test
205
EOD
206
files: {
207
${TMPDIR}/a: "",
208
}
209
EOF
210
211
cat << EOF >> manifest2
212
name: test2
213
origin: test
214
version: 1
215
maintainer: test
216
categories: [test]
217
comment: a test
218
www: http://test
219
prefix: /
220
abi = "*";
221
desc: <<EOD
222
Yet another test
223
EOD
224
deps: {
225
test: {
226
origin: "test",
227
version: "1"
228
}
229
}
230
files: {
231
${TMPDIR}/b: "",
232
${TMPDIR}/c: "",
233
}
234
EOF
235
236
cat << EOF >> manifest3
237
name: test
238
origin: test
239
version: "1.1"
240
maintainer: test
241
categories: [test]
242
comment: a test
243
www: http://test
244
prefix: /
245
abi = "*";
246
desc: <<EOD
247
Yet another test
248
EOD
249
files: {
250
${TMPDIR}/a: "",
251
${TMPDIR}/b: "",
252
}
253
EOF
254
255
cat << EOF >> manifest4
256
name: test2
257
origin: test
258
version: "1.1"
259
maintainer: test
260
categories: [test]
261
comment: a test
262
www: http://test
263
prefix: /
264
abi = "*";
265
desc: <<EOD
266
Yet another test
267
EOD
268
deps: {
269
test: {
270
origin: "test",
271
version: "1.1"
272
}
273
}
274
files: {
275
${TMPDIR}/c: "",
276
}
277
EOF
278
atf_check \
279
-o match:".*Installing.*\.\.\.$" \
280
-e empty \
281
-s exit:0 \
282
pkg register -M manifest
283
284
atf_check \
285
-o match:".*Installing.*\.\.\.$" \
286
-e empty \
287
-s exit:0 \
288
pkg register -M manifest2
289
290
mkdir repo1
291
atf_check \
292
-o empty \
293
-e empty \
294
-s exit:0 \
295
pkg create -M manifest -o repo1/
296
297
atf_check \
298
-o empty \
299
-e empty \
300
-s exit:0 \
301
pkg create -M manifest2 -o repo1/
302
303
mkdir repo2
304
atf_check \
305
-o empty \
306
-e empty \
307
-s exit:0 \
308
pkg create -M manifest3 -o repo2/
309
310
atf_check \
311
-o empty \
312
-e empty \
313
-s exit:0 \
314
pkg create -M manifest4 -o repo2/
315
316
atf_check \
317
-o inline:"Creating repository in repo1: done\nPacking files for repository: done\n" \
318
-e empty \
319
-s exit:0 \
320
pkg repo repo1
321
322
atf_check \
323
-o inline:"Creating repository in repo2: done\nPacking files for repository: done\n" \
324
-e empty \
325
-s exit:0 \
326
pkg repo repo2
327
328
cat << EOF >> repo.conf
329
local1: {
330
url: file:///${TMPDIR}/repo1,
331
enabled: true
332
}
333
local2: {
334
url: file:///${TMPDIR}/repo2,
335
enabled:true
336
}
337
EOF
338
339
OUTPUT="Updating local1 repository catalogue...
340
${JAILED}Fetching meta.conf: done
341
${JAILED}Fetching data.pkg: done
342
Processing entries: done
343
local1 repository update completed. 2 packages processed.
344
Updating local2 repository catalogue...
345
${JAILED}Fetching meta.conf: done
346
${JAILED}Fetching data.pkg: done
347
Processing entries: done
348
local2 repository update completed. 2 packages processed.
349
All repositories are up to date.
350
Updating database digests format: done
351
Checking for upgrades (2 candidates): done
352
Processing candidates (2 candidates): done
353
Checking integrity... done (2 conflicting)
354
- test-1.1 [local2] conflicts with test2-1 [installed] on ${TMPDIR}/b
355
- test-1.1 [local2] conflicts with test2-1 [local1] on ${TMPDIR}/b
356
Checking integrity... done (0 conflicting)
357
The following 2 package(s) will be affected (of 0 checked):
358
359
Installed packages to be UPGRADED:
360
test: 1 -> 1.1 [local2]
361
test2: 1 -> 1.1 [local2]
362
363
Number of packages to be upgraded: 2
364
${JAILED}[1/3] Deinstalling test2-1...
365
${JAILED}[1/3] Deleting files for test2-1: done
366
${JAILED}[2/3] Upgrading test from 1 to 1.1...
367
${JAILED}[2/3] Extracting test-1.1: done
368
${JAILED}[3/3] Installing test2-1.1...
369
${JAILED}[3/3] Extracting test2-1.1: done
370
"
371
atf_check \
372
-o inline:"${OUTPUT}" \
373
-s exit:0 \
374
pkg -o CONSERVATIVE_UPGRADE=no -o REPOS_DIR="${TMPDIR}" -o PKG_CACHEDIR="${TMPDIR}" upgrade -y
375
}
376
377