1 # rpmdb.at: test rpmdb access
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 database access])
21 # ------------------------------
22 # Attempt to initialize a rpmdb
23 AT_SETUP([rpm --initdb])
34 # ------------------------------
35 # Run rpm -qa on an empty rpmdb
37 AT_KEYWORDS([rpmdb query])
47 # ------------------------------
48 # Run rpm -q <package> where <package> exists in the db.
49 AT_SETUP([rpm -q foo])
50 AT_KEYWORDS([rpmdb query])
56 /data/RPMS/foo-1.0-1.noarch.rpm
67 # ------------------------------
68 # Run rpm -q <package>- where <package> exists in the db.
69 AT_SETUP([rpm -q foo-])
70 AT_KEYWORDS([rpmdb query])
76 /data/RPMS/foo-1.0-1.noarch.rpm
82 [package foo- is not installed
87 # ------------------------------
88 # install a noarch package into a local rpmdb without --relocate and --nodeps
89 # * Should always succeed
90 AT_SETUP([rpm -i *.noarch.rpm])
91 AT_KEYWORDS([rpmdb install])
98 /data/RPMS/foo-1.0-1.noarch.rpm
104 # ------------------------------
105 # reinstall a noarch package (with no files)
106 AT_SETUP([rpm -U --replacepkgs 1])
107 AT_KEYWORDS([rpmdb install])
113 tpkg="/data/RPMS/foo-1.0-1.noarch.rpm"
115 runroot rpm -i "${tpkg}" &&
116 runroot rpm -U --replacepkgs "${tpkg}" &&
126 # ------------------------------
127 # reinstall a package with different file policies
128 AT_SETUP([rpm -U --replacepkgs 2])
129 AT_KEYWORDS([rpmdb install])
132 AT_XFAIL_IF([test $RPM_XFAIL -ne 0])
136 tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
138 runroot rpm -U --nodeps --ignorearch "${tpkg}" &&
139 runroot rpm -U --nodeps --ignorearch --nodocs --replacepkgs "${tpkg}" &&
141 test -d "${RPMTEST}"/usr/share/doc/hello-2.0
148 # ------------------------------
149 # reinstall a package with different file policies
150 AT_SETUP([rpm --reinstall 1])
151 AT_KEYWORDS([rpmdb install])
157 tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
159 runroot rpm -U --nodeps --ignorearch "${tpkg}" &&
160 runroot rpm --reinstall --nodeps --ignorearch --nodocs "${tpkg}" &&
162 test -d "${RPMTEST}"/usr/share/doc/hello-2.0
169 # ------------------------------
170 # install a package into a local rpmdb
171 # * Shall only work with relocation
172 # * Use --ignorearch because we don't know the arch
173 AT_SETUP([rpm -i --relocate=.. *.i386.rpm])
174 AT_KEYWORDS([rpmdb install])
180 --noscripts --nodeps --ignorearch --relocate=/usr=/check \
181 /data/RPMS/hello-1.0-1.i386.rpm
188 # ------------------------------
189 # install a package into a local rpmdb
190 # * Shall only work with relocation
191 # * Use --ignorearch because we don't know the arch
192 AT_SETUP([rpm -i --relocate=.. *.ppc64.rpm])
193 AT_KEYWORDS([rpmdb install])
199 --noscripts --nodeps --ignorearch --relocate=/usr=/check \
200 /data/RPMS/hello-1.0-1.ppc64.rpm
208 AT_SETUP([rpmdb --rebuilddb])
214 runroot rpm -U --noscripts --nodeps --ignorearch \
215 /data/RPMS/hello-1.0-1.i386.rpm
216 runroot rpm -qa --qf "%{nevra} %{dbinstance}\n"
217 runroot rpm -U --noscripts --nodeps --ignorearch \
218 /data/RPMS/hello-2.0-1.i686.rpm
219 runroot rpm -qa --qf "%{nevra} %{dbinstance}\n"
220 runroot rpmdb --rebuilddb
221 runroot rpm -qa --qf "%{nevra} %{dbinstance}\n"
231 # ------------------------------
232 # Attempt to initialize, rebuild and verify a db
233 AT_SETUP([rpmdb --rebuilddb and verify empty database])
238 runroot rpmdb --rebuilddb
239 runroot rpmdb --verifydb
246 # ------------------------------
247 # Install and verify status
248 AT_SETUP([rpm -U and verify status])
249 AT_KEYWORDS([install rpmdb query])
255 runroot rpmbuild --quiet -bb \
256 --define "pkg status" \
257 --define "filedata same_stuff" \
258 /data/SPECS/conflicttest.spec
260 runroot rpm -U /build/RPMS/noarch/conflictstatus-1.0-1.noarch.rpm
261 runroot rpm -qls conflictstatus
264 [normal /usr/share/my.version
269 # ------------------------------
270 # Install and verify status
271 AT_SETUP([rpm -U with _install_lang and verify status])
272 AT_KEYWORDS([install rpmdb query])
278 runroot rpmbuild --quiet -bb \
279 /data/SPECS/flangtest.spec
281 runroot rpm -U --define "_install_langs de:fi" /build/RPMS/noarch/flangtest-1.0-1.noarch.rpm
282 runroot rpm -qls flangtest
285 [normal /usr/share/flangtest/de.txt
286 normal /usr/share/flangtest/empty.txt
287 not installed /usr/share/flangtest/en.txt
288 normal /usr/share/flangtest/fi.txt
289 normal /usr/share/flangtest/none.txt
290 not installed /usr/share/flangtest/pl.txt
295 # ------------------------------
296 # Install and verify files exist on disk
297 AT_SETUP([rpm -U and verify files on disk])
298 AT_KEYWORDS([install rpmdb])
303 rm -rf "${RPMTEST}"/opt/*
305 runroot rpmbuild --quiet -bb /data/SPECS/selfconflict.spec
306 runroot rpm -U /build/RPMS/noarch/selfconflict-1.0-1.noarch.rpm
307 find "${RPMTEST}"/opt | wc -l
315 # ------------------------------
316 # Install, erase and oerify files removed from disk
317 # Note /opt is not owned by the pkg so it gets left behind
318 AT_SETUP([rpm -e and verify files removed])
319 AT_KEYWORDS([install rpmdb])
324 rm -rf "${RPMTEST}"/opt/*
326 runroot rpmbuild --quiet -bb /data/SPECS/selfconflict.spec
327 runroot rpm -U /build/RPMS/noarch/selfconflict-1.0-1.noarch.rpm
328 runroot rpm -e selfconflict
329 find "${RPMTEST}"/opt | wc -l