msm: consistency for equally ranked keys
[platform/upstream/rpm.git] / tests / rpmreplace.at
1
2 AT_BANNER([RPM file replacement])
3
4 AT_SETUP([upgrade to/from regular file])
5 AT_KEYWORDS([install])
6 AT_CHECK([
7 RPMDB_CLEAR
8 RPMDB_INIT
9 tf="${RPMTEST}"/opt/foo
10 rm -rf "${tf}" "${tf}".rpm*
11 rm -rf "${TOPDIR}"
12
13 runroot rpmbuild --quiet -bb \
14         --define "ver 1.0" \
15         --define "filetype file" \
16         --define "filedata foo" \
17           /data/SPECS/replacetest.spec
18
19 runroot rpmbuild --quiet -bb \
20         --define "ver 2.0" \
21         --define "filetype file" \
22         --define "filedata bar" \
23           /data/SPECS/replacetest.spec
24
25 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
26 cat "${tf}"
27 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
28 cat "${tf}"
29 runroot rpm -U --oldpackage "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
30 cat "${tf}"
31 ],
32 [0],
33 [foo
34 bar
35 foo
36 ],
37 [])
38 AT_CLEANUP
39
40 AT_SETUP([upgrade regular file to/from broken link])
41 AT_KEYWORDS([install])
42 AT_CHECK([
43 RPMDB_CLEAR
44 RPMDB_INIT
45 tf="${RPMTEST}"/opt/foo
46 rm -rf "${RPMTEST}"/opt/*
47 rm -rf "${TOPDIR}"
48
49 runroot rpmbuild --quiet -bb \
50         --define "ver 1.0" \
51         --define "filetype file" \
52         --define "filedata foo" \
53           /data/SPECS/replacetest.spec
54
55 runroot rpmbuild --quiet -bb \
56         --define "ver 2.0" \
57         --define "filetype link" \
58         --define "filedata stuff" \
59           /data/SPECS/replacetest.spec
60
61 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
62 cat "${tf}"
63 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
64 readlink "${tf}"
65 runroot rpm -U --oldpackage "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
66 cat "${tf}"
67 ],
68 [0],
69 [foo
70 stuff
71 foo
72 ],
73 [])
74 AT_CLEANUP
75
76 AT_SETUP([upgrade regular file to/from file link])
77 AT_KEYWORDS([install])
78 AT_CHECK([
79 RPMDB_CLEAR
80 RPMDB_INIT
81 tf="${RPMTEST}"/opt/foo
82 rm -rf "${RPMTEST}"/opt/*
83 rm -rf "${TOPDIR}"
84
85 runroot rpmbuild --quiet -bb \
86         --define "ver 1.0" \
87         --define "filetype file" \
88         --define "filedata foo" \
89           /data/SPECS/replacetest.spec
90
91 runroot rpmbuild --quiet -bb \
92         --define "ver 2.0" \
93         --define "filetype link" \
94         --define "filedata goo" \
95           /data/SPECS/replacetest.spec
96
97 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
98 cat "${tf}"
99 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
100 readlink "${tf}"
101 runroot rpm -U --oldpackage "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
102 cat "${tf}"
103 ],
104 [0],
105 [foo
106 goo
107 foo
108 ],
109 [])
110 AT_CLEANUP
111
112 AT_SETUP([upgrade broken link to broken link])
113 AT_KEYWORDS([install])
114 AT_CHECK([
115 RPMDB_CLEAR
116 RPMDB_INIT
117 tf="${RPMTEST}"/opt/foo
118 rm -rf "${RPMTEST}"/opt/*
119 rm -rf "${TOPDIR}"
120
121 runroot rpmbuild --quiet -bb \
122         --define "ver 1.0" \
123         --define "filetype link" \
124         --define "filedata stiff" \
125           /data/SPECS/replacetest.spec
126
127 runroot rpmbuild --quiet -bb \
128         --define "ver 2.0" \
129         --define "filetype link" \
130         --define "filedata stuff" \
131           /data/SPECS/replacetest.spec
132
133 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
134 readlink "${tf}"
135 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
136 readlink "${tf}"
137 ],
138 [0],
139 [stiff
140 stuff
141 ],
142 [])
143 AT_CLEANUP
144
145 AT_SETUP([upgrade file link to file link])
146 AT_KEYWORDS([install])
147 AT_CHECK([
148 RPMDB_CLEAR
149 RPMDB_INIT
150 tf="${RPMTEST}"/opt/foo
151 rm -rf "${RPMTEST}"/opt/*
152 rm -rf "${TOPDIR}"
153
154 runroot rpmbuild --quiet -bb \
155         --define "ver 1.0" \
156         --define "filetype link" \
157         --define "filedata goo" \
158           /data/SPECS/replacetest.spec
159
160 runroot rpmbuild --quiet -bb \
161         --define "ver 2.0" \
162         --define "filetype link" \
163         --define "filedata goo" \
164           /data/SPECS/replacetest.spec
165
166 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
167 readlink "${tf}"
168 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
169 readlink "${tf}"
170 ],
171 [0],
172 [goo
173 goo
174 ],
175 [])
176 AT_CLEANUP
177
178 AT_SETUP([upgrade directory link to directory link])
179 AT_KEYWORDS([install])
180 AT_CHECK([
181 RPMDB_CLEAR
182 RPMDB_INIT
183 tf="${RPMTEST}"/opt/foo
184 rm -rf "${RPMTEST}"/opt/*
185 rm -rf "${TOPDIR}"
186
187 runroot rpmbuild --quiet -bb \
188         --define "ver 1.0" \
189         --define "filetype link" \
190         --define "filedata zoo" \
191           /data/SPECS/replacetest.spec
192
193 runroot rpmbuild --quiet -bb \
194         --define "ver 2.0" \
195         --define "filetype link" \
196         --define "filedata zoo" \
197           /data/SPECS/replacetest.spec
198
199 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
200 readlink "${tf}"
201 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
202 readlink "${tf}"
203 ],
204 [0],
205 [zoo
206 zoo
207 ],
208 [])
209 AT_CLEANUP
210
211 AT_SETUP([upgrade regular file to directory])
212 AT_KEYWORDS([install])
213 AT_CHECK([
214 RPMDB_CLEAR
215 RPMDB_INIT
216 tf="${RPMTEST}"/opt/foo
217 rm -rf "${RPMTEST}"/opt/*
218 rm -rf "${TOPDIR}"
219
220 runroot rpmbuild --quiet -bb \
221         --define "ver 1.0" \
222         --define "filetype file" \
223         --define "filedata foo" \
224           /data/SPECS/replacetest.spec
225
226 runroot rpmbuild --quiet -bb \
227         --define "ver 2.0" \
228         --define "filetype dir" \
229           /data/SPECS/replacetest.spec
230
231 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
232 cat "${tf}"
233 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
234 test -d "${tf}"
235 ],
236 [0],
237 [foo
238 ],
239 [])
240 AT_CLEANUP
241
242 AT_SETUP([upgrade broken link to directory])
243 AT_KEYWORDS([install])
244 AT_CHECK([
245 RPMDB_CLEAR
246 RPMDB_INIT
247 tf="${RPMTEST}"/opt/foo
248 rm -rf "${RPMTEST}"/opt/*
249 rm -rf "${TOPDIR}"
250
251 runroot rpmbuild --quiet -bb \
252         --define "ver 1.0" \
253         --define "filetype link" \
254         --define "filedata other" \
255           /data/SPECS/replacetest.spec
256
257 runroot rpmbuild --quiet -bb \
258         --define "ver 2.0" \
259         --define "filetype dir" \
260           /data/SPECS/replacetest.spec
261
262 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
263 readlink "${tf}"
264 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
265 test -d "${tf}"
266 ],
267 [0],
268 [other
269 ],
270 [])
271 AT_CLEANUP
272
273 AT_SETUP([upgrade file link to directory])
274 AT_KEYWORDS([install])
275 AT_CHECK([
276 RPMDB_CLEAR
277 RPMDB_INIT
278 tf="${RPMTEST}"/opt/foo
279 rm -rf "${RPMTEST}"/opt/*
280 rm -rf "${TOPDIR}"
281
282 runroot rpmbuild --quiet -bb \
283         --define "ver 1.0" \
284         --define "filetype link" \
285         --define "filedata goo" \
286           /data/SPECS/replacetest.spec
287
288 runroot rpmbuild --quiet -bb \
289         --define "ver 2.0" \
290         --define "filetype dir" \
291           /data/SPECS/replacetest.spec
292
293 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
294 readlink "${tf}"
295 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
296 test -d "${tf}"
297 ],
298 [0],
299 [goo
300 ],
301 [])
302 AT_CLEANUP
303
304 AT_SETUP([upgrade directory link to directory])
305 AT_KEYWORDS([install])
306 AT_CHECK([
307 RPMDB_CLEAR
308 RPMDB_INIT
309 tf="${RPMTEST}"/opt/foo
310 rm -rf "${RPMTEST}"/opt/*
311 rm -rf "${TOPDIR}"
312
313 runroot rpmbuild --quiet -bb \
314         --define "ver 1.0" \
315         --define "filetype link" \
316         --define "filedata zoo" \
317           /data/SPECS/replacetest.spec
318
319 runroot rpmbuild --quiet -bb \
320         --define "ver 2.0" \
321         --define "filetype dir" \
322           /data/SPECS/replacetest.spec
323
324 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
325 readlink "${tf}"
326 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
327 ],
328 [2],
329 [zoo
330 ],
331 [       file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
332 ])
333 AT_CLEANUP
334
335 AT_SETUP([upgrade empty directory to empty directory])
336 AT_KEYWORDS([install])
337 AT_CHECK([
338 RPMDB_CLEAR
339 RPMDB_INIT
340 tf="${RPMTEST}"/opt/foo
341 rm -rf "${RPMTEST}"/opt/*
342 rm -rf "${TOPDIR}"
343
344 runroot rpmbuild --quiet -bb \
345         --define "ver 1.0" \
346         --define "filetype dir" \
347           /data/SPECS/replacetest.spec
348
349 runroot rpmbuild --quiet -bb \
350         --define "ver 2.0" \
351         --define "filetype dir" \
352           /data/SPECS/replacetest.spec
353
354 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
355 test -d "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
356 test -d "${tf}"
357 ],
358 [0],
359 [],
360 [])
361 AT_CLEANUP
362
363 AT_SETUP([upgrade empty directory to regular file])
364 AT_KEYWORDS([install])
365 AT_CHECK([
366 RPMDB_CLEAR
367 RPMDB_INIT
368 tf="${RPMTEST}"/opt/foo
369 rm -rf "${RPMTEST}"/opt/*
370 rm -rf "${TOPDIR}"
371
372 runroot rpmbuild --quiet -bb \
373         --define "ver 1.0" \
374         --define "filetype dir" \
375           /data/SPECS/replacetest.spec
376
377 runroot rpmbuild --quiet -bb \
378         --define "ver 2.0" \
379         --define "filetype file" \
380         --define "filedata woot" \
381           /data/SPECS/replacetest.spec
382
383 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
384 test -d "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
385 ],
386 [2],
387 [],
388 [       file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
389 ])
390 AT_CLEANUP
391
392 AT_SETUP([upgrade locally symlinked directory])
393 AT_KEYWORDS([install])
394 AT_CHECK([
395 RPMDB_CLEAR
396 RPMDB_INIT
397 tf="${RPMTEST}"/opt/foo
398 rm -rf "${RPMTEST}"/opt/*
399 rm -rf "${TOPDIR}"
400
401 runroot rpmbuild --quiet -bb \
402         --define "ver 1.0" \
403         --define "filetype datadir" \
404         --define "filedata README1" \
405           /data/SPECS/replacetest.spec
406
407 runroot rpmbuild --quiet -bb \
408         --define "ver 2.0" \
409         --define "filetype datadir" \
410         --define "filedata README2" \
411           /data/SPECS/replacetest.spec
412
413 mkdir "${RPMTEST}"/opt/f00f
414 ln -s f00f "${RPMTEST}"/opt/foo
415 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
416 test -L "${tf}" && test -d "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
417 test -L "${tf}" && test -d "${tf}"
418 ],
419 [0],
420 [],
421 [])
422 AT_CLEANUP
423
424 AT_SETUP([upgrade empty directory to broken link])
425 AT_KEYWORDS([install])
426 AT_CHECK([
427 RPMDB_CLEAR
428 RPMDB_INIT
429 tf="${RPMTEST}"/opt/foo
430 rm -rf "${RPMTEST}"/opt/*
431 rm -rf "${TOPDIR}"
432
433 runroot rpmbuild --quiet -bb \
434         --define "ver 1.0" \
435         --define "filetype dir" \
436           /data/SPECS/replacetest.spec
437
438 runroot rpmbuild --quiet -bb \
439         --define "ver 2.0" \
440         --define "filetype link" \
441         --define "filedata woot" \
442           /data/SPECS/replacetest.spec
443
444 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
445 test -d "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
446 ],
447 [2],
448 [],
449 [       file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
450 ])
451 AT_CLEANUP
452
453 AT_SETUP([upgrade empty directory to file link])
454 AT_KEYWORDS([install])
455 AT_CHECK([
456 RPMDB_CLEAR
457 RPMDB_INIT
458 tf="${RPMTEST}"/opt/foo
459 rm -rf "${RPMTEST}"/opt/*
460 rm -rf "${TOPDIR}"
461
462 runroot rpmbuild --quiet -bb \
463         --define "ver 1.0" \
464         --define "filetype dir" \
465           /data/SPECS/replacetest.spec
466
467 runroot rpmbuild --quiet -bb \
468         --define "ver 2.0" \
469         --define "filetype link" \
470         --define "filedata woot" \
471           /data/SPECS/replacetest.spec
472
473 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
474 test -d "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
475 ],
476 [2],
477 [],
478 [       file /opt/foo from install of replacetest-2.0-1.noarch conflicts with file from package replacetest-1.0-1.noarch
479 ])
480 AT_CLEANUP
481
482 AT_SETUP([upgrade removed empty directory to file link])
483 AT_KEYWORDS([install])
484 AT_CHECK([
485 RPMDB_CLEAR
486 RPMDB_INIT
487 tf="${RPMTEST}"/opt/foo
488 rm -rf "${RPMTEST}"/opt/*
489 rm -rf "${TOPDIR}"
490
491 runroot rpmbuild --quiet -bb \
492         --define "ver 1.0" \
493         --define "filetype dir" \
494           /data/SPECS/replacetest.spec
495
496 runroot rpmbuild --quiet -bb \
497         --define "ver 2.0" \
498         --define "filetype link" \
499         --define "filedata goo" \
500           /data/SPECS/replacetest.spec
501
502 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
503 test -d "${tf}" && rmdir "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
504 readlink "${tf}"
505 ],
506 [0],
507 [goo
508 ],
509 [])
510 AT_CLEANUP
511
512 AT_SETUP([upgrade replaced empty directory to file link])
513 AT_KEYWORDS([install])
514 AT_CHECK([
515 RPMDB_CLEAR
516 RPMDB_INIT
517 tf="${RPMTEST}"/opt/foo
518 rm -rf "${RPMTEST}"/opt/*
519 rm -rf "${TOPDIR}"
520
521 runroot rpmbuild --quiet -bb \
522         --define "ver 1.0" \
523         --define "filetype dir" \
524           /data/SPECS/replacetest.spec
525
526 runroot rpmbuild --quiet -bb \
527         --define "ver 2.0" \
528         --define "filetype link" \
529         --define "filedata goo" \
530           /data/SPECS/replacetest.spec
531
532 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
533 test -d "${tf}" && rmdir "${tf}" && ln -sf goo "${tf}" && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
534 readlink "${tf}"
535 ],
536 [0],
537 [goo
538 ],
539 [])
540 AT_CLEANUP
541
542 AT_SETUP([upgrade empty directory to file link with pretrans])
543 AT_KEYWORDS([install])
544 AT_CHECK([
545 RPMDB_CLEAR
546 RPMDB_INIT
547 tf="${RPMTEST}"/opt/foo
548 rm -rf "${RPMTEST}"/opt/*
549 rm -rf "${TOPDIR}"
550
551 runroot rpmbuild --quiet -bb \
552         --define "ver 1.0" \
553         --define "filetype dir" \
554           /data/SPECS/replacetest.spec
555
556 runroot rpmbuild --quiet -bb \
557         --define "ver 2.0" \
558         --define "filetype link" \
559         --define "filedata goo" \
560         --define "fixit posix.rmdir('/opt/foo')" \
561           /data/SPECS/replacetest.spec
562
563 runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-1.0-1.noarch.rpm
564 test -d "${tf}" && runroot rpm -U --test "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm && runroot rpm -U "${TOPDIR}"/RPMS/noarch/replacetest-2.0-1.noarch.rpm
565 readlink "${tf}"
566 ],
567 [0],
568 [goo
569 ],
570 [])
571 AT_CLEANUP