1 # rpmquery.at: test rpmquery
3 # Copyright (C) 2007 Ralf Corsépius <corsepiu@fedoraproject.org>
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.
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.
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
19 AT_BANNER([RPM queries])
21 # ------------------------------
22 AT_SETUP([rpm --qf -p *.i386.rpm])
26 -q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
27 -p /data/RPMS/hello-1.0-1.i386.rpm
35 # ------------------------------
36 AT_SETUP([rpm --qf -p *.src.rpm])
40 -q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
41 -p /data/SRPMS/hello-1.0-1.src.rpm
49 # ------------------------------
50 AT_SETUP([rpm -ql -p *.src.rpm])
55 -p /data/SRPMS/hello-1.0-1.src.rpm
64 # ------------------------------
65 AT_SETUP([rpmspec -q])
69 -q --qf "%{name}" /data/SPECS/hello.spec
76 # ------------------------------
77 AT_SETUP([rpm -ql -p *.i386.rpm])
82 -p /data/RPMS/hello-1.0-1.i386.rpm
86 /usr/share/doc/hello-1.0
87 /usr/share/doc/hello-1.0/FAQ
92 # ------------------------------
93 # Test query on manifest
94 AT_SETUP([rpm -qp <manifest>])
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
102 runroot rpm -qp --qf "%{nvr}\n" /query.mft
112 # ------------------------------
113 # Try to check "scripts"
114 # * Gets rpmpopt-$(VERSION) involved
115 AT_SETUP([rpm -q --scripts -p *.i386.rpm])
120 -p /data/RPMS/hello-1.0-1.i386.rpm
123 [preinstall program: /bin/sh
124 postinstall program: /bin/sh
125 preuninstall program: /bin/sh
126 postuninstall program: /bin/sh
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])
144 --noscripts --nodeps --ignorearch --relocate=/usr=/check \
145 -i /data/RPMS/hello-1.0-1.ppc64.rpm
149 # check common NVRA combinations
152 -q hello hello-1.0 hello-1.0-1 \
153 hello.ppc64 hello-1.0.ppc64 hello-1.0-1.ppc64
171 [/check/local/bin/hello
172 /check/share/doc/hello-1.0
173 /check/share/doc/hello-1.0/FAQ
179 # ------------------------------
180 AT_SETUP([integer array query])
184 --queryformat="[[%{filemodes}\n]]" \
185 -qp /data/RPMS/hello-1.0-1.i386.rpm
195 # ------------------------------
196 AT_SETUP([formatted filesbypkg query])
200 --queryformat="[[%-10{=NAME} %{FILENAMES}\n]]" \
201 -qp /data/RPMS/hello-1.0-1.i386.rpm
204 [hello /usr/local/bin/hello
205 hello /usr/share/doc/hello-1.0
206 hello /usr/share/doc/hello-1.0/FAQ
211 # ------------------------------
212 AT_SETUP([hex formatted integer array extension query])
216 --queryformat="[[%5{longfilesizes:hex}\n]]" \
217 -qp /data/RPMS/hello-1.0-1.i386.rpm
227 # ------------------------------
228 AT_SETUP([base64 extension query])
232 --queryformat="%{pkgid:base64}" \
233 -qp /data/RPMS/foo-1.0-1.noarch.rpm
236 [qt8W635v5FKy1pILrW+0uw==
241 # ------------------------------
242 AT_SETUP([integer array perms format query])
246 --queryformat="[[%{filemodes:perms}\n]]" \
247 -qp /data/RPMS/hello-1.0-1.i386.rpm
257 # ------------------------------
258 AT_SETUP([string array query])
262 --queryformat="[[%{basenames} ]]" \
263 -qp /data/RPMS/hello-1.0-1.i386.rpm
266 [hello hello-1.0 FAQ ],
270 # ------------------------------
271 AT_SETUP([empty string array query])
275 --queryformat="[[%{basenames}]]" \
276 -qp /data/RPMS/foo-1.0-1.noarch.rpm
283 # ------------------------------
284 AT_SETUP([empty string array extension array format])
288 --queryformat="[[%{filenames}]]" \
289 -qp /data/RPMS/foo-1.0-1.noarch.rpm
296 # ------------------------------
297 AT_SETUP([empty string array extension query])
301 --queryformat="%{filenames}" \
302 -qp /data/RPMS/foo-1.0-1.noarch.rpm
309 # ------------------------------
310 AT_SETUP([different sizes arrays query])
314 --queryformat="[[%{basenames} %{changelogname}]]" \
315 -qp /data/RPMS/hello-1.0-1.i386.rpm
319 [error: incorrect format: array iterator used with different sized arrays
323 # ------------------------------
324 AT_SETUP([non-existent string tag])
328 --queryformat="%{vendor}" \
329 -qp /data/RPMS/foo-1.0-1.noarch.rpm
336 # ------------------------------
337 AT_SETUP([non-existent integer tag query])
341 --queryformat="%{installcolor}" \
342 -qp /data/RPMS/foo-1.0-1.noarch.rpm
349 # ------------------------------
350 AT_SETUP([conditional queryformat])
354 --queryformat="%|name?{%{name}}:{no}| %|installtime?{%{installtime}}:{(not installed)}|" \
355 -qp /data/RPMS/foo-1.0-1.noarch.rpm
358 [foo (not installed)],
362 # ------------------------------
363 AT_SETUP([invalid tag query])
367 --queryformat="%{notag}" \
368 -qp /data/RPMS/foo-1.0-1.noarch.rpm
372 [error: incorrect format: unknown tag
376 # ------------------------------
377 AT_SETUP([invalid data for format query])
381 --queryformat="%{name:depflags}" \
382 -qp /data/RPMS/foo-1.0-1.noarch.rpm
389 # ------------------------------
390 AT_SETUP([invalid format width query])
394 --queryformat="%ss{size}" \
395 -qp /data/RPMS/foo-1.0-1.noarch.rpm
399 [error: incorrect format: invalid field width