msm: consistency for equally ranked keys
[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 runroot rpm \
26   -q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
27   -p /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 runroot rpm \
40   -q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
41   -p /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 runroot rpm \
54   -ql \
55   -p /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([rpmspec -q])
66 AT_KEYWORDS([query])
67 AT_CHECK([
68 runroot rpmspec \
69   -q --qf "%{name}" /data/SPECS/hello.spec
70 ],
71 [0],
72 [hello],
73 [])
74 AT_CLEANUP
75
76 # ------------------------------
77 AT_SETUP([rpm -ql -p *.i386.rpm])
78 AT_KEYWORDS([query])
79 AT_CHECK([
80 runroot rpm \
81   -ql \
82   -p /data/RPMS/hello-1.0-1.i386.rpm
83 ],
84 [0],
85 [/usr/local/bin/hello
86 /usr/share/doc/hello-1.0
87 /usr/share/doc/hello-1.0/FAQ
88 ],
89 [ignore])
90 AT_CLEANUP
91
92 # ------------------------------
93 # Test query on manifest
94 AT_SETUP([rpm -qp <manifest>])
95 AT_KEYWORDS([query])
96 AT_CHECK([
97 cat << EOF > ${RPMTEST}/query.mft
98 /data/RPMS/hello-1.0-1.i386.rpm
99 /data/RPMS/hello-1.0-1.ppc64.rpm
100 /data/RPMS/foo-1.0-1.noarch.rpm
101 EOF
102 runroot rpm -qp --qf "%{nvr}\n" /query.mft
103 ],
104 [0],
105 [hello-1.0-1
106 hello-1.0-1
107 foo-1.0-1
108 ],
109 [])
110 AT_CLEANUP
111
112 # ------------------------------
113 # Try to check "scripts"
114 # * Gets rpmpopt-$(VERSION) involved
115 AT_SETUP([rpm -q --scripts -p *.i386.rpm])
116 AT_KEYWORDS([query])
117 AT_CHECK([
118 runroot rpm \
119   -q --scripts \
120   -p /data/RPMS/hello-1.0-1.i386.rpm
121 ],
122 [0],
123 [preinstall program: /bin/sh
124 postinstall program: /bin/sh
125 preuninstall program: /bin/sh
126 postuninstall program: /bin/sh
127 ],
128 [ignore])
129 AT_CLEANUP
130
131
132 # ------------------------------
133 # install a package into a local rpmdb
134 # * Shall only work with relocation
135 # * Use --ignorearch because we don't know the arch
136 AT_SETUP([rpm -q on installed package])
137 AT_KEYWORDS([rpmdb install query])
138
139 AT_CHECK([
140 RPMDB_CLEAR
141 RPMDB_INIT
142
143 runroot rpm \
144   --noscripts --nodeps --ignorearch --relocate=/usr=/check \
145   -i /data/RPMS/hello-1.0-1.ppc64.rpm
146 ],
147 [0])
148
149 # check common NVRA combinations
150 AT_CHECK([
151 runroot rpm \
152   -q hello hello-1.0 hello-1.0-1 \
153      hello.ppc64 hello-1.0.ppc64 hello-1.0-1.ppc64 
154 ],
155 [0],
156 [hello-1.0-1.ppc64
157 hello-1.0-1.ppc64
158 hello-1.0-1.ppc64
159 hello-1.0-1.ppc64
160 hello-1.0-1.ppc64
161 hello-1.0-1.ppc64
162 ],
163 [ignore])
164
165
166 AT_CHECK([
167 runroot rpm \
168   -ql hello
169 ],
170 [0],
171 [/check/local/bin/hello
172 /check/share/doc/hello-1.0
173 /check/share/doc/hello-1.0/FAQ
174 ],
175 [ignore])
176
177 AT_CLEANUP
178
179 # ------------------------------
180 AT_SETUP([integer array query])
181 AT_KEYWORDS([query])
182 AT_CHECK([
183 runroot rpm \
184   --queryformat="[[%{filemodes}\n]]" \
185   -qp /data/RPMS/hello-1.0-1.i386.rpm
186 ],
187 [0],
188 [33257
189 16877
190 33188
191 ],
192 [])
193 AT_CLEANUP
194
195 # ------------------------------
196 AT_SETUP([formatted filesbypkg query])
197 AT_KEYWORDS([query])
198 AT_CHECK([
199 runroot rpm \
200   --queryformat="[[%-10{=NAME} %{FILENAMES}\n]]" \
201   -qp /data/RPMS/hello-1.0-1.i386.rpm
202 ],
203 [0],
204 [hello      /usr/local/bin/hello
205 hello      /usr/share/doc/hello-1.0
206 hello      /usr/share/doc/hello-1.0/FAQ
207 ],
208 [])
209 AT_CLEANUP
210
211 # ------------------------------
212 AT_SETUP([hex formatted integer array extension query])
213 AT_KEYWORDS([query])
214 AT_CHECK([
215 runroot rpm \
216   --queryformat="[[%5{longfilesizes:hex}\n]]" \
217   -qp /data/RPMS/hello-1.0-1.i386.rpm
218 ],
219 [0],
220 [  b40
221  1000
222    24
223 ],
224 [])
225 AT_CLEANUP
226
227 # ------------------------------
228 AT_SETUP([base64 extension query])
229 AT_KEYWORDS([query])
230 AT_CHECK([
231 runroot rpm \
232   --queryformat="%{pkgid:base64}" \
233   -qp /data/RPMS/foo-1.0-1.noarch.rpm
234 ],
235 [0],
236 [qt8W635v5FKy1pILrW+0uw==
237 ],
238 [])
239 AT_CLEANUP
240
241 # ------------------------------
242 AT_SETUP([integer array perms format query])
243 AT_KEYWORDS([query])
244 AT_CHECK([
245 runroot rpm \
246   --queryformat="[[%{filemodes:perms}\n]]" \
247   -qp /data/RPMS/hello-1.0-1.i386.rpm
248 ],
249 [0],
250 [-rwxr-x--x
251 drwxr-xr-x
252 -rw-r--r--
253 ],
254 [])
255 AT_CLEANUP
256
257 # ------------------------------
258 AT_SETUP([string array query])
259 AT_KEYWORDS([query])
260 AT_CHECK([
261 runroot rpm \
262   --queryformat="[[%{basenames} ]]" \
263   -qp /data/RPMS/hello-1.0-1.i386.rpm
264 ],
265 [0],
266 [hello hello-1.0 FAQ ],
267 [])
268 AT_CLEANUP
269
270 # ------------------------------
271 AT_SETUP([empty string array query])
272 AT_KEYWORDS([query])
273 AT_CHECK([
274 runroot rpm \
275   --queryformat="[[%{basenames}]]" \
276   -qp /data/RPMS/foo-1.0-1.noarch.rpm
277 ],
278 [0],
279 [],
280 [])
281 AT_CLEANUP
282
283 # ------------------------------
284 AT_SETUP([empty string array extension array format])
285 AT_KEYWORDS([query])
286 AT_CHECK([
287 runroot rpm \
288   --queryformat="[[%{filenames}]]" \
289   -qp /data/RPMS/foo-1.0-1.noarch.rpm
290 ],
291 [0],
292 [],
293 [])
294 AT_CLEANUP
295
296 # ------------------------------
297 AT_SETUP([empty string array extension query])
298 AT_KEYWORDS([query])
299 AT_CHECK([
300 runroot rpm \
301   --queryformat="%{filenames}" \
302   -qp /data/RPMS/foo-1.0-1.noarch.rpm
303 ],
304 [0],
305 [(none)],
306 [])
307 AT_CLEANUP
308
309 # ------------------------------
310 AT_SETUP([different sizes arrays query])
311 AT_KEYWORDS([query])
312 AT_CHECK([
313 runroot rpm \
314   --queryformat="[[%{basenames} %{changelogname}]]" \
315   -qp /data/RPMS/hello-1.0-1.i386.rpm
316 ],
317 [0],
318 [],
319 [error: incorrect format: array iterator used with different sized arrays
320 ])
321 AT_CLEANUP
322
323 # ------------------------------
324 AT_SETUP([non-existent string tag])
325 AT_KEYWORDS([query])
326 AT_CHECK([
327 runroot rpm \
328   --queryformat="%{vendor}" \
329   -qp /data/RPMS/foo-1.0-1.noarch.rpm
330 ],
331 [0],
332 [(none)],
333 [])
334 AT_CLEANUP
335
336 # ------------------------------
337 AT_SETUP([non-existent integer tag query])
338 AT_KEYWORDS([query])
339 AT_CHECK([
340 runroot rpm \
341   --queryformat="%{installcolor}" \
342   -qp /data/RPMS/foo-1.0-1.noarch.rpm
343 ],
344 [0],
345 [(none)],
346 [])
347 AT_CLEANUP
348
349 # ------------------------------
350 AT_SETUP([conditional queryformat])
351 AT_KEYWORDS([query])
352 AT_CHECK([
353 runroot rpm \
354   --queryformat="%|name?{%{name}}:{no}| %|installtime?{%{installtime}}:{(not installed)}|" \
355   -qp /data/RPMS/foo-1.0-1.noarch.rpm
356 ],
357 [0],
358 [foo (not installed)],
359 [])
360 AT_CLEANUP
361
362 # ------------------------------
363 AT_SETUP([invalid tag query])
364 AT_KEYWORDS([query])
365 AT_CHECK([
366 runroot rpm \
367   --queryformat="%{notag}" \
368   -qp /data/RPMS/foo-1.0-1.noarch.rpm
369 ],
370 [0],
371 [],
372 [error: incorrect format: unknown tag
373 ])
374 AT_CLEANUP
375
376 # ------------------------------
377 AT_SETUP([invalid data for format query])
378 AT_KEYWORDS([query])
379 AT_CHECK([
380 runroot rpm \
381   --queryformat="%{name:depflags}" \
382   -qp /data/RPMS/foo-1.0-1.noarch.rpm
383 ],
384 [0],
385 [(not a number)],
386 [])
387 AT_CLEANUP
388
389 # ------------------------------
390 AT_SETUP([invalid format width query])
391 AT_KEYWORDS([query])
392 AT_CHECK([
393 runroot rpm \
394   --queryformat="%ss{size}" \
395   -qp /data/RPMS/foo-1.0-1.noarch.rpm
396 ],
397 [0],
398 [],
399 [error: incorrect format: invalid field width
400 ])
401 AT_CLEANUP