Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/tests/frontend/issue1440.sh
2065 views
1
#! /usr/bin/env atf-sh
2
3
. $(atf_get_srcdir)/test_environment.sh
4
5
6
# https://github.com/freebsd/pkg/issues/1440
7
#pkgA
8
# - pkgB
9
# - pkgC
10
# - pkgD
11
#1. Two repos (repoA and repoB) with same set of packages. pkgA for repoA and repoB have different options set.
12
# repoB has prio 100, so all packages must be prefered from this one.
13
#2. On upgrade pkg wants to reinstall pkgA due options changed from repoA which is wrong.
14
15
tests_init \
16
issue1440
17
18
issue1440_body() {
19
20
touch pkgA.file
21
touch pkgB.file
22
touch pkgC.file
23
touch pkgD.file
24
25
cat << EOF > pkgA.ucl
26
name: pkgA
27
origin: misc/pkgA
28
version: "1.0"
29
maintainer: test
30
categories: [test]
31
comment: a test
32
www: http://test
33
prefix: /usr/local
34
desc: <<EOD
35
Yet another test
36
EOD
37
options: {
38
APNG: "on",
39
PNGTEST: "on"
40
}
41
deps: {
42
pkgB: {
43
origin: "misc/pkgB",
44
version: "1.0"
45
}
46
}
47
files: {
48
${TMPDIR}/pkgA.file: "",
49
}
50
EOF
51
52
cat << EOF > pkgB.ucl
53
name: pkgB
54
origin: misc/pkgB
55
version: "1.0"
56
maintainer: test
57
categories: [test]
58
comment: a test
59
www: http://test
60
prefix: /usr/local
61
desc: <<EOD
62
Yet another test
63
EOD
64
deps: {
65
pkgC: {
66
origin: "misc/pkgC",
67
version: "1.0"
68
}
69
}
70
71
files: {
72
${TMPDIR}/pkgB.file: "",
73
}
74
EOF
75
76
cat << EOF > pkgC.ucl
77
name: pkgC
78
origin: misc/pkgC
79
version: "1.0"
80
maintainer: test
81
categories: [test]
82
comment: a test
83
www: http://test
84
prefix: /usr/local
85
desc: <<EOD
86
Yet another test
87
EOD
88
deps: {
89
pkgD: {
90
origin: "misc/pkgD",
91
version: "1.0"
92
}
93
}
94
files: {
95
${TMPDIR}/pkgC.file: "",
96
}
97
EOF
98
99
100
cat << EOF > pkgD.ucl
101
name: pkgD
102
origin: misc/pkgD
103
version: "1.0"
104
maintainer: test
105
categories: [test]
106
comment: a test
107
www: http://test
108
prefix: /usr/local
109
desc: <<EOD
110
Yet another test
111
EOD
112
files: {
113
${TMPDIR}/pkgD.file: "",
114
}
115
EOF
116
117
mkdir reposconf
118
cat << EOF > reposconf/repos.conf
119
repoA: {
120
url: file://${TMPDIR}/repoA,
121
enabled: true
122
}
123
repoB: {
124
url: file://${TMPDIR}/repoB,
125
priority: 100,
126
enabled: true
127
}
128
129
EOF
130
131
for p in pkgA pkgB pkgC pkgD; do
132
atf_check \
133
-o ignore \
134
-e empty \
135
-s exit:0 \
136
pkg create -o ${TMPDIR}/repoA -M ./${p}.ucl
137
done
138
139
atf_check \
140
-o inline:"Creating repository in ${TMPDIR}/repoA: done\nPacking files for repository: done\n" \
141
-e empty \
142
-s exit:0 \
143
pkg repo -o ${TMPDIR}/repoA ${TMPDIR}/repoA
144
145
cat << EOF > pkgA.ucl
146
name: pkgA
147
origin: misc/pkgA
148
version: "1.0"
149
maintainer: test
150
categories: [test]
151
comment: a test
152
www: http://test
153
prefix: /usr/local
154
desc: <<EOD
155
Yet another test
156
EOD
157
options: {
158
APNG: "off",
159
PNGTEST: "on"
160
}
161
deps: {
162
pkgB: {
163
origin: "misc/pkgB",
164
version: "1.0"
165
}
166
}
167
files: {
168
${TMPDIR}/pkgA.file: "",
169
}
170
EOF
171
172
for p in pkgA pkgB pkgC pkgD; do
173
atf_check \
174
-o ignore \
175
-e empty \
176
-s exit:0 \
177
pkg create -o ${TMPDIR}/repoB -M ./${p}.ucl
178
done
179
180
181
atf_check \
182
-o inline:"Creating repository in ${TMPDIR}/repoB: done\nPacking files for repository: done\n" \
183
-e empty \
184
-s exit:0 \
185
pkg repo -o ${TMPDIR}/repoB ${TMPDIR}/repoB
186
187
188
189
OUTPUT_CASE1="Updating repoA repository catalogue...
190
${JAILED}Fetching meta.conf: done
191
${JAILED}Fetching data.pkg: done
192
Processing entries: done
193
repoA repository update completed. 4 packages processed.
194
Updating repoB repository catalogue...
195
${JAILED}Fetching meta.conf: done
196
${JAILED}Fetching data.pkg: done
197
Processing entries: done
198
repoB repository update completed. 4 packages processed.
199
All repositories are up to date.
200
Checking integrity... done (0 conflicting)
201
The following 4 package(s) will be affected (of 0 checked):
202
203
New packages to be INSTALLED:
204
pkgA: 1.0 [repoB]
205
pkgB: 1.0 [repoB]
206
pkgC: 1.0 [repoB]
207
pkgD: 1.0 [repoB]
208
209
Number of packages to be installed: 4
210
${JAILED}[1/4] Installing pkgD-1.0...
211
${JAILED}[1/4] Extracting pkgD-1.0: done
212
${JAILED}[2/4] Installing pkgC-1.0...
213
${JAILED}[2/4] Extracting pkgC-1.0: done
214
${JAILED}[3/4] Installing pkgB-1.0...
215
${JAILED}[3/4] Extracting pkgB-1.0: done
216
${JAILED}[4/4] Installing pkgA-1.0...
217
${JAILED}[4/4] Extracting pkgA-1.0: done
218
"
219
220
atf_check \
221
-o inline:"${OUTPUT_CASE1}" \
222
-s exit:0 \
223
pkg -o REPOS_DIR="${TMPDIR}/reposconf" -o PKG_CACHEDIR="${TMPDIR}" install -y pkgA
224
225
226
227
OUTPUT_CASE2="Updating repoA repository catalogue...
228
repoA repository is up to date.
229
Updating repoB repository catalogue...
230
repoB repository is up to date.
231
All repositories are up to date.
232
Checking for upgrades (1 candidates): done
233
Processing candidates (1 candidates): done
234
Checking integrity... done (0 conflicting)
235
Your packages are up to date.
236
"
237
atf_check \
238
-o inline:"${OUTPUT_CASE2}" \
239
-e empty \
240
-s exit:0 \
241
pkg -o REPOS_DIR="${TMPDIR}/reposconf" -o PKG_CACHEDIR="${TMPDIR}" upgrade -y
242
243
}
244
245