e1893c7cd78b08e776668e9ac3ecb3d1f5d21e77
[platform/upstream/rpm.git] / tests / rpmdb.at
1 #    rpmdb.at: test rpmdb access
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 database access])
20
21 # ------------------------------
22 # Attempt to initialize a rpmdb
23 AT_SETUP([rpm --initdb])
24 AT_KEYWORDS([rpmdb])
25 AT_CHECK([
26 RPMDB_CLEAR
27 RPMDB_INIT
28 ],
29 [0],
30 [ignore],
31 [ignore])
32 AT_CLEANUP
33
34 # ------------------------------
35 # Run rpm -qa on an empty rpmdb
36 AT_SETUP([rpm -qa])
37 AT_KEYWORDS([rpmdb query])
38 AT_CHECK([
39 RPMDB_CLEAR
40 RPMDB_INIT
41 runroot rpm \
42   -qa
43 ],
44 [0])
45 AT_CLEANUP
46
47 # ------------------------------
48 # Run rpm -q <package> where <package> exists in the db.
49 AT_SETUP([rpm -q foo])
50 AT_KEYWORDS([rpmdb query])
51 AT_CHECK([
52 RPMDB_CLEAR
53 RPMDB_INIT
54
55 runroot rpm -i \
56   /data/RPMS/foo-1.0-1.noarch.rpm
57
58 runroot rpm -q foo
59
60 ],
61 [0],
62 [foo-1.0-1.noarch
63 ],
64 [])
65 AT_CLEANUP
66
67 # ------------------------------
68 # Run rpm -q <package>- where <package> exists in the db.
69 AT_SETUP([rpm -q foo-])
70 AT_KEYWORDS([rpmdb query])
71 AT_CHECK([
72 RPMDB_CLEAR
73 RPMDB_INIT
74
75 runroot rpm -i \
76   /data/RPMS/foo-1.0-1.noarch.rpm
77
78 runroot rpm -q foo-
79
80 ],
81 [1],
82 [package foo- is not installed
83 ],
84 [])
85 AT_CLEANUP
86
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])
92
93 AT_CHECK([
94 RPMDB_CLEAR
95 RPMDB_INIT
96
97 runroot rpm -i \
98   /data/RPMS/foo-1.0-1.noarch.rpm
99 ],
100 [0])
101
102 AT_CLEANUP
103
104 # ------------------------------
105 # reinstall a noarch package (with no files)
106 AT_SETUP([rpm -U --replacepkgs 1])
107 AT_KEYWORDS([rpmdb install])
108
109 AT_CHECK([
110 RPMDB_CLEAR
111 RPMDB_INIT
112
113 tpkg="/data/RPMS/foo-1.0-1.noarch.rpm"
114
115 runroot rpm -i "${tpkg}" && 
116   runroot rpm -U --replacepkgs "${tpkg}" &&
117   runroot rpm -qa
118 ],
119 [0],
120 [foo-1.0-1.noarch
121 ],
122 [])
123
124 AT_CLEANUP
125
126 # ------------------------------
127 # reinstall a package with different file policies
128 AT_SETUP([rpm -U --replacepkgs 2])
129 AT_KEYWORDS([rpmdb install])
130
131 AT_CHECK([
132 AT_XFAIL_IF([test $RPM_XFAIL -ne 0])
133 RPMDB_CLEAR
134 RPMDB_INIT
135
136 tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
137
138 runroot rpm -U --nodeps --ignorearch "${tpkg}" && 
139   runroot rpm -U --nodeps --ignorearch --nodocs --replacepkgs "${tpkg}" &&
140   runroot rpm -e hello
141 test -d "${RPMTEST}"/usr/share/doc/hello-2.0
142 ],
143 [1],
144 [],
145 [])
146 AT_CLEANUP
147
148 # ------------------------------
149 # reinstall a package with different file policies
150 AT_SETUP([rpm --reinstall 1])
151 AT_KEYWORDS([rpmdb install])
152
153 AT_CHECK([
154 RPMDB_CLEAR
155 RPMDB_INIT
156
157 tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
158
159 runroot rpm -U --nodeps --ignorearch "${tpkg}" && 
160   runroot rpm --reinstall --nodeps --ignorearch --nodocs "${tpkg}" &&
161   runroot rpm -e hello
162 test -d "${RPMTEST}"/usr/share/doc/hello-2.0
163 ],
164 [1],
165 [],
166 [])
167 AT_CLEANUP
168
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])
175 AT_CHECK([
176 RPMDB_CLEAR
177 RPMDB_INIT
178
179 runroot rpm -i \
180   --noscripts --nodeps --ignorearch --relocate=/usr=/check \
181   /data/RPMS/hello-1.0-1.i386.rpm
182 ],
183 [0])
184
185 AT_CLEANUP
186
187
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])
194 AT_CHECK([
195 RPMDB_CLEAR
196 RPMDB_INIT
197
198 runroot rpm -i \
199   --noscripts --nodeps --ignorearch --relocate=/usr=/check \
200   /data/RPMS/hello-1.0-1.ppc64.rpm
201 ],
202 [0],
203 [ignore],
204 [ignore])
205
206 AT_CLEANUP
207
208 AT_SETUP([rpmdb --rebuilddb])
209 AT_KEYWORDS([rpmdb])
210 AT_CHECK([
211 RPMDB_CLEAR
212 RPMDB_INIT
213
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"
222 ],
223 [],
224 [hello-1.0-1.i386 1
225 hello-2.0-1.i686 2
226 hello-2.0-1.i686 1
227 ],
228 [])
229 AT_CLEANUP
230
231 # ------------------------------
232 # Attempt to initialize, rebuild and verify a db
233 AT_SETUP([rpmdb --rebuilddb and verify empty database])
234 AT_KEYWORDS([rpmdb])
235 AT_CHECK([
236 RPMDB_CLEAR
237 RPMDB_INIT
238 runroot rpmdb --rebuilddb
239 runroot rpmdb --verifydb
240 ],
241 [0],
242 [],
243 [])
244 AT_CLEANUP
245
246 # ------------------------------
247 # Install and verify status
248 AT_SETUP([rpm -U and verify status])
249 AT_KEYWORDS([install rpmdb query])
250 AT_CHECK([
251 RPMDB_CLEAR
252 RPMDB_INIT
253 rm -rf "${TOPDIR}"
254
255 runroot rpmbuild --quiet -bb \
256         --define "pkg status" \
257         --define "filedata same_stuff" \
258           /data/SPECS/conflicttest.spec
259
260 runroot rpm -U /build/RPMS/noarch/conflictstatus-1.0-1.noarch.rpm
261 runroot rpm -qls conflictstatus
262 ],
263 [0],
264 [normal        /usr/share/my.version
265 ],
266 [])
267 AT_CLEANUP
268
269 # ------------------------------
270 # Install and verify status
271 AT_SETUP([rpm -U with _install_lang and verify status])
272 AT_KEYWORDS([install rpmdb query])
273 AT_CHECK([
274 RPMDB_CLEAR
275 RPMDB_INIT
276 rm -rf "${TOPDIR}"
277
278 runroot rpmbuild --quiet -bb \
279           /data/SPECS/flangtest.spec
280
281 runroot rpm -U --define "_install_langs de:fi" /build/RPMS/noarch/flangtest-1.0-1.noarch.rpm
282 runroot rpm -qls flangtest
283 ],
284 [0],
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
291 ],
292 [])
293 AT_CLEANUP
294
295 # ------------------------------
296 # Install and verify files exist on disk
297 AT_SETUP([rpm -U and verify files on disk])
298 AT_KEYWORDS([install rpmdb])
299 AT_CHECK([
300 RPMDB_CLEAR
301 RPMDB_INIT
302 rm -rf "${TOPDIR}"
303 rm -rf "${RPMTEST}"/opt/*
304
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
308 ],
309 [0],
310 [6
311 ],
312 [])
313 AT_CLEANUP
314
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])
320 AT_CHECK([
321 RPMDB_CLEAR
322 RPMDB_INIT
323 rm -rf "${TOPDIR}"
324 rm -rf "${RPMTEST}"/opt/*
325
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
330 ],
331 [0],
332 [1
333 ],
334 [])
335 AT_CLEANUP