summaryrefslogtreecommitdiffstats
path: root/test/integration/test-apt-source-and-build-dep
blob: 24790a578c354565e9a1dd79ef17317a369f11de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"

setupenvironment
configarchitecture 'i386'

# we need to insert a package into "unstable" so that a Release file is
# create for the test
insertpackage 'wheezy' 'build-essential' 'all' '1.0'

# a "normal" package with source and binary
insertpackage 'unstable' 'foo' 'all' '2.0'
insertsource 'unstable' 'foo' 'all' '2.0'
insertpackage 'unstable' 'foo-common' 'all' '2.0' 'Source: foo (2.0)'
insertpackage 'experimental' 'foo' 'all' '5' 'Depends: foo-common (= 5)'
insertpackage 'experimental' 'foo-common' 'all' '5' 'Source: foo (5)'
insertsource 'experimental' 'foo-source' 'all' '42' 'Build-Depends: foo (= 5), baz'

# binary packages with Source-field
insertpackage 'unstable,testing' 'bin' 'i386' '3-2+b1' 'Source: bin (3-2)'
insertsource 'unstable,testing' 'bin' 'any' '3-2'
insertpackage 'stable' 'bin' 'i386' '2-2+b1' 'Source: bin-backport (2-2)'
insertsource 'stable' 'bin-backport' 'any' '2-2'

# its possible to have multiple src versions in the sources file, ensure
# to pick the correct one in this case (bts #731853)
insertsource 'stable' 'foo' 'all' '1.5'
insertsource 'stable' 'foo' 'all' '0.5'
insertpackage 'stable' 'foo' 'all' '1.0'
insertsource 'stable' 'foo' 'all' '1.0'

# these packages exists only as sources, add two versions to ensure that
# apt will pick the higher version number (bts #731853)
insertsource 'wheezy' 'foo' 'all' '0.0.1'
insertsource 'wheezy' 'foo' 'all' '0.1'

# the order of these versions is chosen to ensure that
# * apt will pick the one in the correct release, despite a higher version coming later and
# * apt will pick the highest version in a release, despite a lower version coming later.
# (bts #746412)
insertsource 'stable' 'baz' 'all' '1.0'
insertsource 'unstable' 'baz' 'all' '2.0'
insertsource 'unstable' 'baz' 'all' '1.5'
insertpackage 'unstable' 'baz' 'all' '2.0'
insertpackage 'experimental' 'baz' 'all' '5.0'

# ensure we really have the situation we wanted (first 2.0 is foo above)
testequal 'Version: 2.0
Version: 3-2
Version: 2.0
Version: 1.5' grep '^Version:' aptarchive/dists/unstable/main/source/Sources

insertsource 'stable' 'bar' 'any' '1.1' 'Vcs-Browser: https://anonscm.debian.org/cgit/bar/bar.git
Vcs-Git: git://anonscm.debian.org/bar/bar.git -b debian/experimental'

setupaptarchive

APTARCHIVE=$(readlink -f ./aptarchive)

# normal operation gets highest version number
HEADER='Reading package lists...'
DOWNLOAD1="Need to get 0 B/25 B of source archives.
'file://${APTARCHIVE}/foo_1.0.dsc' foo_1.0.dsc 11 SHA256:ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7
'file://${APTARCHIVE}/foo_1.0.tar.gz' foo_1.0.tar.gz 14 SHA256:f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239"
DOWNLOAD2="Need to get 0 B/25 B of source archives.
'file://${APTARCHIVE}/foo_2.0.dsc' foo_2.0.dsc 11 SHA256:0fcb803ffbeef26db884625aaf06e75f3eda5c994634980e7c20fd37ed1fc104
'file://${APTARCHIVE}/foo_2.0.tar.gz' foo_2.0.tar.gz 14 SHA256:ca9b0b828ca22372502af2b80f61f0bd9063910ece9fc34eeaf9d9e31aa8195a"
DOWNLOAD3="Need to get 0 B/25 B of source archives.
'file://${APTARCHIVE}/baz_1.0.dsc' baz_1.0.dsc 11 SHA256:322245f56092b466801dda62d79c8687bba9724af6d16d450d655d29e41d3d7b
'file://${APTARCHIVE}/baz_1.0.tar.gz' baz_1.0.tar.gz 14 SHA256:0870bc73164ff5ba1f52153fdcb48e140137f9c7c122d57592cea136a57f73c0"
DOWNLOAD4="Need to get 0 B/25 B of source archives.
'file://${APTARCHIVE}/baz_2.0.dsc' baz_2.0.dsc 11 SHA256:47d062d29070b3f592d1c8aed8c1e7913804bbb67ca1d64877c8219dac5e0420
'file://${APTARCHIVE}/baz_2.0.tar.gz' baz_2.0.tar.gz 14 SHA256:11c1b202c94a64ab6433d9f0ed5515fce1dc7b20e6bcf51cec9ef8b9455f5a41"
testsuccessequal "$HEADER
$DOWNLOAD2" apt source -q --print-uris foo
testsuccessequal "$HEADER
$DOWNLOAD2" apt source -q --print-uris foo foo
getbuilddep() {
	echo 'Reading package lists...'
	if [ -n "$2" ]; then
		echo "$2"
	fi
	echo "${1} has no build depends.
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  build-essential
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Inst build-essential (1.0 wheezy [all])
Conf build-essential (1.0 wheezy [all])"
}
testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo -s

# select by release: suite
testsuccessequal "$HEADER
Selected version '1.0' (stable) for foo
$DOWNLOAD1" apt source -q --print-uris foo/stable
testsuccessequal "$(getbuilddep 'foo' "Selected version '1.0' (stable) for foo")" apt build-dep foo/stable -s
testsuccessequal "$HEADER
Selected version '2.0' (unstable) for foo
$DOWNLOAD2" apt source -q --print-uris foo/unstable
testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (unstable) for foo")" apt build-dep foo/unstable -s
testsuccessequal "$HEADER
Selected version '1.0' (stable) for foo
$DOWNLOAD1" apt source -q --print-uris foo -t stable
testsuccessequal "$(getbuilddep 'foo' "Selected version '1.0' (stable) for foo")" apt build-dep foo -t stable -s
testsuccessequal "$HEADER
Selected version '2.0' (unstable) for foo
$DOWNLOAD2" apt source -q --print-uris foo -t unstable
testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (unstable) for foo")" apt build-dep foo -t unstable -s
testsuccessequal "$HEADER
Selected version '1.0' (stable) for baz
$DOWNLOAD3" apt source -q --print-uris baz -t stable
testsuccessequal "$(getbuilddep 'baz' "Selected version '1.0' (stable) for baz")" apt build-dep baz -t stable -s

# select by release: codename
testsuccessequal "$HEADER
Selected version '2.0' (sid) for foo
$DOWNLOAD2" apt source -q --print-uris foo/sid
testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (sid) for foo")" apt build-dep foo/sid -s
testsuccessequal "$HEADER
Selected version '2.0' (sid) for foo
$DOWNLOAD2" apt source -q --print-uris foo -t sid
testsuccessequal "$(getbuilddep 'foo' "Selected version '2.0' (sid) for foo")" apt build-dep foo -t sid -s
testsuccessequal "$HEADER
Selected version '2.0' (sid) for baz
$DOWNLOAD4" apt source -q --print-uris baz -t sid
testsuccessequal "$(getbuilddep 'baz' "Selected version '2.0' (sid) for baz")" apt build-dep baz -t sid -s

# select by version
testsuccessequal "$HEADER
$DOWNLOAD1" apt source -q --print-uris foo=1.0
testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo=1.0 -s

# select by release with no binary package (Bug#731102) but ensure to get
# highest version
DOWNLOAD01="Need to get 0 B/25 B of source archives.
'file://${APTARCHIVE}/foo_0.1.dsc' foo_0.1.dsc 11 SHA256:72af24b0290fe1d13a3e25fddd2633e43c87ff79d249bc850009e47bcce73565
'file://${APTARCHIVE}/foo_0.1.tar.gz' foo_0.1.tar.gz 14 SHA256:ec748ad88a71f98bfdc012e1a7632377d05fe3ebbf9c0922e0691fe4d79c0585"
testsuccessequal "$HEADER
Selected version '0.1' (wheezy) for foo
$DOWNLOAD01" apt source -q --print-uris foo/wheezy
testsuccessequal "$(getbuilddep 'foo' "Selected version '0.1' (wheezy) for foo")" apt build-dep foo/wheezy -s

# unavailable one
testfailureequal "$HEADER
E: Can not find version '9.9-not-there' of package 'foo'
E: Unable to find a source package for foo" apt source -q --print-uris foo=9.9-not-there
testfailureequal "Reading package lists...
E: Can not find version '9.9-not-there' of package 'foo'
E: Unable to find a source package for foo=9.9-not-there" apt build-dep -s foo=9.9-not-there

# version and release
DOWNLOAD001="Need to get 0 B/29 B of source archives.
'file://${APTARCHIVE}/foo_0.0.1.dsc' foo_0.0.1.dsc 13 SHA256:649dfe03bbb70cebdfe7c6bf9036f9f2472510b8f52e823bdf5ade362ebaa76f
'file://${APTARCHIVE}/foo_0.0.1.tar.gz' foo_0.0.1.tar.gz 16 SHA256:ab7ba789d178362ecc808e49705e2338988a7f5b9410ec11a6c9555c017de907"
testsuccessequal "$HEADER
$DOWNLOAD001" apt source -q --print-uris -t unstable foo=0.0.1
testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo=0.0.1 -s

testsuccessequal "$HEADER
Need to get 0 B/25 B of source archives.
Fetch source foo" apt source -q -s foo
testsuccessequal "$(getbuilddep 'foo')" apt build-dep foo -s

testfailureequal 'E: Must specify at least one package to fetch source for' apt source
testfailureequal 'E: Must specify at least one package to check builddeps for' apt build-dep

testsuccessequal "Reading package lists...
NOTICE: 'bar' packaging is maintained in the 'Git' version control system at:
git://anonscm.debian.org/bar/bar.git -b debian/experimental
Please use:
git clone git://anonscm.debian.org/bar/bar.git -b debian/experimental
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 0 B/25 B of source archives.
Fetch source bar" apt source bar -s
testsuccessequal "$(getbuilddep 'bar')" apt build-dep bar -s

testsuccessequal "$HEADER
Need to get 0 B/25 B of source archives.
Fetch source bin" apt source bin -s -q
testsuccessequal "$(getbuilddep 'bin')" apt build-dep bin -s
testsuccessequal "$HEADER
Selected version '3-2' (unstable) for bin
Need to get 0 B/25 B of source archives.
Fetch source bin" apt source bin/unstable -s -q
testsuccessequal "$(getbuilddep 'bin' "Selected version '3-2' (unstable) for bin")" apt build-dep bin/unstable -s
testsuccessequal "$HEADER
Picking 'bin-backport' as source package instead of 'bin'
Selected version '2-2' (stable) for bin-backport
Need to get 0 B/43 B of source archives.
Fetch source bin-backport" apt source bin/stable -s -q
testsuccessequal "$(getbuilddep 'bin-backport' "Picking 'bin-backport' as source package instead of 'bin'
Selected version '2-2' (stable) for bin-backport")" apt build-dep bin/stable -s

testsuccess apt install foo/experimental -s
testfailure apt build-dep foo-source -s
testsuccessequal "Reading package lists...
Selected version '42' (experimental) for foo-source
Reading package lists...
Building dependency tree...
Selected version '5' (experimental [all]) for 'foo' because of 'src:foo-source'
Selected version '5' (experimental [all]) for 'foo-common' because of 'foo'
The following NEW packages will be installed:
  baz build-essential foo foo-common
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Inst baz (2.0 unstable [all])
Inst build-essential (1.0 wheezy [all])
Inst foo-common (5 experimental [all])
Inst foo (5 experimental [all])
Conf baz (2.0 unstable [all])
Conf build-essential (1.0 wheezy [all])
Conf foo-common (5 experimental [all])
Conf foo (5 experimental [all])" apt build-dep foo-source/experimental -s
testsuccessequal "Reading package lists...
Selected version '42' (experimental) for foo-source
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  baz build-essential foo foo-common
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Inst baz (5.0 experimental [all])
Inst build-essential (1.0 wheezy [all])
Inst foo-common (5 experimental [all])
Inst foo (5 experimental [all])
Conf baz (5.0 experimental [all])
Conf build-essential (1.0 wheezy [all])
Conf foo-common (5 experimental [all])
Conf foo (5 experimental [all])" apt build-dep foo-source -t experimental -s
# this checks that mentioning the source pkg baz has no influence on the binary package baz
testsuccessequal "Reading package lists...
Selected version '42' (experimental) for foo-source
Selected version '2.0' (unstable) for baz
baz has no build depends.
Reading package lists...
Building dependency tree...
The following NEW packages will be installed:
  baz build-essential foo foo-common
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Inst baz (5.0 experimental [all])
Inst build-essential (1.0 wheezy [all])
Inst foo-common (5 experimental [all])
Inst foo (5 experimental [all])
Conf baz (5.0 experimental [all])
Conf build-essential (1.0 wheezy [all])
Conf foo-common (5 experimental [all])
Conf foo (5 experimental [all])" apt build-dep foo-source baz/unstable -t experimental -s