Sanitize python object -> tag number exception handling
[platform/upstream/rpm.git] / tests / rpmquery.at
1 #    rpmquery.at: test rpmquery
2 #
3 #    Copyright (C) 2007  Ralf Corsépius <corsepiu@fedoraproject.org>
4 #
5 #    This program is free software; you can redistribute it and/or modify
6 #    it under the terms of the GNU General Public License as published by
7 #    the Free Software Foundation; either version 2 of the License, or
8 #    (at your option) any later version.
9 #
10 #    This program is distributed in the hope that it will be useful,
11 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 #    GNU General Public License for more details.
14 #
15 #    You should have received a copy of the GNU General Public License
16 #    along with this program; if not, write to the Free Software
17 #    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18
19 AT_BANNER([RPM queries])
20
21 # ------------------------------
22 AT_SETUP([rpm --qf -p *.i386.rpm])
23 AT_KEYWORDS([query])
24 AT_CHECK([
25 run rpm \
26   -q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
27   -p "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
28 ],
29 [0],
30 [hello-1.0-1.i386
31 ],
32 [ignore])
33 AT_CLEANUP
34
35 # ------------------------------
36 AT_SETUP([rpm --qf -p *.src.rpm])
37 AT_KEYWORDS([query])
38 AT_CHECK([
39 run rpm \
40   -q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
41   -p "${abs_srcdir}"/data/SRPMS/hello-1.0-1.src.rpm
42 ],
43 [0],
44 [hello-1.0-1.i386
45 ],
46 [ignore])
47 AT_CLEANUP
48
49 # ------------------------------
50 AT_SETUP([rpm -ql -p *.src.rpm])
51 AT_KEYWORDS([query])
52 AT_CHECK([
53 run rpm \
54   -ql \
55   -p "${abs_srcdir}"/data/SRPMS/hello-1.0-1.src.rpm
56 ],
57 [0],
58 [hello-1.0.tar.gz
59 hello.spec
60 ],
61 [ignore])
62 AT_CLEANUP
63
64 # ------------------------------
65 AT_SETUP([rpm -ql -p *.i386.rpm])
66 AT_KEYWORDS([query])
67 AT_CHECK([
68 rpm \
69   -ql \
70   -p "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
71 ],
72 [0],
73 [/usr/local/bin/hello
74 /usr/share/doc/hello-1.0
75 /usr/share/doc/hello-1.0/FAQ
76 ],
77 [ignore])
78 AT_CLEANUP
79
80
81 # ------------------------------
82 # Try to check "scripts"
83 # * Gets rpmpopt-$(VERSION) involved
84 AT_SETUP([rpm -q --scripts -p *.i386.rpm])
85 AT_KEYWORDS([query])
86 AT_CHECK([
87 run rpm \
88   -q --scripts \
89   -p "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
90 ],
91 [0],
92 [preinstall program: /bin/sh
93 postinstall program: /bin/sh
94 preuninstall program: /bin/sh
95 postuninstall program: /bin/sh
96 ],
97 [ignore])
98 AT_CLEANUP
99
100
101 # ------------------------------
102 # install a package into a local rpmdb
103 # * Shall only work with relocation
104 # * Use --ignorearch because we don't know the arch
105 AT_SETUP([rpm -qil hello])
106 AT_KEYWORDS([rpmdb install query])
107
108 AT_CHECK([
109 RPMDB_CLEAR
110 RPMDB_INIT
111
112 tpkg="hello-1.0-1.ppc64.rpm"
113 cp "${RPMDATA}/RPMS/$tpkg" "${RPMTEST}"
114
115 runroot rpm \
116   --noscripts --nodeps --ignorearch --relocate=/usr="${abs_builddir}"/testing/check \
117   -i "${tpkg}"
118 ],
119 [0])
120
121 AT_CHECK([
122 runroot rpm \
123   -q hello
124 ],
125 [0],
126 [hello-1.0-1.ppc64
127 ],
128 [ignore])
129
130 cat > expout << _ATEOF
131 ${abs_builddir}/testing/check/local/bin/hello
132 ${abs_builddir}/testing/check/share/doc/hello-1.0
133 ${abs_builddir}/testing/check/share/doc/hello-1.0/FAQ
134 _ATEOF
135
136 AT_CHECK([
137 runroot rpm \
138   -ql hello
139 ],
140 [0],
141 [expout],
142 [ignore])
143
144 AT_CLEANUP
145
146 # ------------------------------
147 AT_SETUP([integer array query])
148 AT_KEYWORDS([query])
149 AT_CHECK([
150 run rpm \
151   --queryformat="[[%{filemodes}\n]]" \
152   -qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
153 ],
154 [0],
155 [33257
156 16877
157 33188
158 ],
159 [])
160 AT_CLEANUP
161
162 # ------------------------------
163 AT_SETUP([formatted filesbypkg query])
164 AT_KEYWORDS([query])
165 AT_CHECK([
166 run rpm \
167   --queryformat="[[%-10{=NAME} %{FILENAMES}\n]]" \
168   -qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
169 ],
170 [0],
171 [hello      /usr/local/bin/hello
172 hello      /usr/share/doc/hello-1.0
173 hello      /usr/share/doc/hello-1.0/FAQ
174 ],
175 [])
176 AT_CLEANUP
177
178 # ------------------------------
179 AT_SETUP([hex formatted integer array extension query])
180 AT_KEYWORDS([query])
181 AT_CHECK([
182 run rpm \
183   --queryformat="[[%5{longfilesizes:hex}\n]]" \
184   -qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
185 ],
186 [0],
187 [  b40
188  1000
189    24
190 ],
191 [])
192 AT_CLEANUP
193
194 # ------------------------------
195 AT_SETUP([base64 extension query])
196 AT_KEYWORDS([query])
197 AT_CHECK([
198 run rpm \
199   --queryformat="%{pkgid:base64}" \
200   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
201 ],
202 [0],
203 [qt8W635v5FKy1pILrW+0uw==
204 ],
205 [])
206 AT_CLEANUP
207
208 # ------------------------------
209 AT_SETUP([integer array perms format query])
210 AT_KEYWORDS([query])
211 AT_CHECK([
212 run rpm \
213   --queryformat="[[%{filemodes:perms}\n]]" \
214   -qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
215 ],
216 [0],
217 [-rwxr-x--x
218 drwxr-xr-x
219 -rw-r--r--
220 ],
221 [])
222 AT_CLEANUP
223
224 # ------------------------------
225 AT_SETUP([string array query])
226 AT_KEYWORDS([query])
227 AT_CHECK([
228 run rpm \
229   --queryformat="[[%{basenames} ]]" \
230   -qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
231 ],
232 [0],
233 [hello hello-1.0 FAQ ],
234 [])
235 AT_CLEANUP
236
237 # ------------------------------
238 AT_SETUP([empty string array query])
239 AT_KEYWORDS([query])
240 AT_CHECK([
241 run rpm \
242   --queryformat="[[%{basenames}]]" \
243   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
244 ],
245 [0],
246 [],
247 [])
248 AT_CLEANUP
249
250 # ------------------------------
251 AT_SETUP([empty string array extension array format])
252 AT_KEYWORDS([query])
253 AT_CHECK([
254 run rpm \
255   --queryformat="[[%{filenames}]]" \
256   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
257 ],
258 [0],
259 [],
260 [])
261 AT_CLEANUP
262
263 # ------------------------------
264 AT_SETUP([empty string array extension query])
265 AT_KEYWORDS([query])
266 AT_CHECK([
267 run rpm \
268   --queryformat="%{filenames}" \
269   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
270 ],
271 [0],
272 [(none)],
273 [])
274 AT_CLEANUP
275
276 # ------------------------------
277 AT_SETUP([different sizes arrays query])
278 AT_KEYWORDS([query])
279 AT_CHECK([
280 run rpm \
281   --queryformat="[[%{basenames} %{changelogname}]]" \
282   -qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
283 ],
284 [0],
285 [],
286 [error: incorrect format: array iterator used with different sized arrays
287 ])
288 AT_CLEANUP
289
290 # ------------------------------
291 AT_SETUP([non-existent string tag])
292 AT_KEYWORDS([query])
293 AT_CHECK([
294 run rpm \
295   --queryformat="%{vendor}" \
296   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
297 ],
298 [0],
299 [(none)],
300 [])
301 AT_CLEANUP
302
303 # ------------------------------
304 AT_SETUP([non-existent integer tag query])
305 AT_KEYWORDS([query])
306 AT_CHECK([
307 run rpm \
308   --queryformat="%{installcolor}" \
309   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
310 ],
311 [0],
312 [(none)],
313 [])
314 AT_CLEANUP
315
316 # ------------------------------
317 AT_SETUP([conditional queryformat])
318 AT_KEYWORDS([query])
319 AT_CHECK([
320 run rpm \
321   --queryformat="%|name?{%{name}}:{no}| %|installtime?{%{installtime}}:{(not installed)}|" \
322   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
323 ],
324 [0],
325 [foo (not installed)],
326 [])
327 AT_CLEANUP
328
329 # ------------------------------
330 AT_SETUP([invalid tag query])
331 AT_KEYWORDS([query])
332 AT_CHECK([
333 run rpm \
334   --queryformat="%{notag}" \
335   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
336 ],
337 [0],
338 [],
339 [error: incorrect format: unknown tag
340 ])
341 AT_CLEANUP
342
343 # ------------------------------
344 AT_SETUP([invalid data for format query])
345 AT_KEYWORDS([query])
346 AT_CHECK([
347 run rpm \
348   --queryformat="%{name:depflags}" \
349   -qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
350 ],
351 [0],
352 [(not a number)],
353 [])
354 AT_CLEANUP