Fix Werrors with GCC-14.1.0
[platform/upstream/rpm.git] / tests / rpmverify.at
1 #    rpmverify.at: rpm verification tests
2
3 AT_BANNER([RPM verification])
4
5 # ------------------------------
6
7 AT_SETUP([dependency problems])
8 AT_KEYWORDS([verify])
9 AT_CHECK([
10 RPMDB_CLEAR
11 RPMDB_INIT
12 rm -rf "${TOPDIR}"
13
14 runroot rpmbuild --quiet -bb \
15         --define "pkg one" \
16         --define "reqs deptest-two" \
17           /data/SPECS/deptest.spec
18
19 runroot rpm -U --nodeps /build/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
20 runroot rpm -Va --nofiles
21 ],
22 [1],
23 [Unsatisfied dependencies for deptest-one-1.0-1.noarch:
24         deptest-two is needed by (installed) deptest-one-1.0-1.noarch
25 ],
26 [])
27 AT_CLEANUP
28
29 # Test file verify when no errors expected.
30 # Ignore dependencies here as we're not testing for them, and
31 # --nogroup --nouser is required when running tests as non-root.
32 AT_SETUP([files with no problems])
33 AT_KEYWORDS([verify])
34 AT_CHECK([
35 RPMDB_CLEAR
36 RPMDB_INIT
37
38 runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \
39         /data/RPMS/hello-1.0-1.i386.rpm
40 runroot rpm -Va --nodeps --nouser --nogroup
41 ],
42 [0],
43 [],
44 [])
45 AT_CLEANUP
46
47 # Test file verify when no errors expected in verbose mode.
48 AT_SETUP([files with no problems in verbose mode])
49 AT_KEYWORDS([verify])
50 AT_CHECK([
51 RPMDB_CLEAR
52 RPMDB_INIT
53
54 runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \
55         /data/RPMS/hello-1.0-1.i386.rpm
56 runroot rpm -Vva --nodeps --nouser --nogroup
57 ],
58 [0],
59 [.........    /usr/local/bin/hello
60 .........    /usr/share/doc/hello-1.0
61 .........  d /usr/share/doc/hello-1.0/FAQ
62 ],
63 [])
64 AT_CLEANUP
65
66 # Test file verify when no errors expected in verbose mode.
67 AT_SETUP([directory replaced with a directory symlink])
68 AT_KEYWORDS([verify])
69 AT_CHECK([
70 RPMDB_CLEAR
71 RPMDB_INIT
72 tf="${RPMTEST}"/opt/foo
73 rm -rf "${RPMTEST}"/opt/*
74 rm -rf "${TOPDIR}"
75
76 runroot rpmbuild --quiet -bb \
77         --define "ver 1.0" \
78         --define "filetype datadir" \
79         --define "filedata README1" \
80         --define "user $(id -u -n)" \
81         --define "grp $(id -g -n)" \
82           /data/SPECS/replacetest.spec
83
84 runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
85 mv "${RPMTEST}"/opt/foo "${RPMTEST}"/opt/was
86 ln -s was "${RPMTEST}"/opt/foo
87 runroot rpm -Vv replacetest
88 ],
89 [0],
90 [.........    /opt/foo
91 .........    /opt/foo/README1
92 .........    /opt/goo
93 .........    /opt/zoo
94 ],
95 [])
96 AT_CLEANUP
97
98 AT_SETUP([directory replaced with an invalid directory symlink])
99 AT_KEYWORDS([verify])
100 AT_CHECK([
101 RPMDB_CLEAR
102 RPMDB_INIT
103 tf="${RPMTEST}"/opt/foo
104 rm -rf "${RPMTEST}"/opt/*
105 rm -rf "${TOPDIR}"
106
107 runroot rpmbuild --quiet -bb \
108         --define "ver 1.0" \
109         --define "filetype datadir" \
110         --define "filedata README1" \
111           /data/SPECS/replacetest.spec
112
113 runroot rpm -U /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
114 mv "${RPMTEST}"/opt/foo "${RPMTEST}"/opt/was
115 ln -s was "${RPMTEST}"/opt/foo
116 runroot rpm -Vv --nouser --nogroup replacetest
117 ],
118 [1],
119 [....L....    /opt/foo
120 .........    /opt/foo/README1
121 .........    /opt/goo
122 .........    /opt/zoo
123 ],
124 [])
125 AT_CLEANUP
126
127 # Test file verify after mutilating the files a bit.
128 AT_SETUP([verify from db, with problems present])
129 AT_KEYWORDS([verify])
130 AT_CHECK([
131 RPMDB_CLEAR
132 RPMDB_INIT
133
134 runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \
135         /data/RPMS/hello-1.0-1.i386.rpm
136 rm -f "${RPMTEST}"/usr/share/doc/hello-1.0/FAQ
137 chmod u-x "${RPMTEST}"/usr/local/bin/hello
138 dd if=/dev/zero of="${RPMTEST}"/usr/local/bin/hello \
139    conv=notrunc bs=1 seek=5 count=6 2> /dev/null
140 runroot rpm -Va --nodeps --nouser --nogroup
141 ],
142 [1],
143 [.M5....T.    /usr/local/bin/hello
144 missing   d /usr/share/doc/hello-1.0/FAQ
145 ],
146 [])
147 AT_CLEANUP
148
149 # Test file verify from original package after mutilating the files a bit.
150 AT_SETUP([verify from package, with problems present])
151 AT_KEYWORDS([verify])
152 AT_CHECK([
153 RPMDB_CLEAR
154 RPMDB_INIT
155
156 runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \
157         /data/RPMS/hello-1.0-1.i386.rpm
158 rm -f "${RPMTEST}"/usr/share/doc/hello-1.0/FAQ
159 chmod u-x "${RPMTEST}"/usr/local/bin/hello
160 dd if=/dev/zero of="${RPMTEST}"/usr/local/bin/hello \
161    conv=notrunc bs=1 seek=5 count=6 2> /dev/null
162 runroot rpm -Vp --nodeps --nouser --nogroup /data/RPMS/hello-1.0-1.i386.rpm
163 ],
164 [1],
165 [.M5....T.    /usr/local/bin/hello
166 missing   d /usr/share/doc/hello-1.0/FAQ
167 ],
168 [])
169 AT_CLEANUP
170
171 AT_SETUP([verify file attribute filtering])
172 AT_KEYWORDS([query])
173 AT_CHECK([
174 runroot rpmbuild -bb --quiet \
175   /data/SPECS/vattrtest.spec
176
177 runroot rpm -U /build/RPMS/noarch/vattrtest-1.0-1.noarch.rpm
178 runroot_other touch /opt/vattrtest/g
179 runroot_other chmod 644 /opt/vattrtest/g
180
181 cmd="rpm -Vv --nouser --nogroup"
182 for filter in --noconfig --noghost --noartifact; do
183     echo ${filter}
184     runroot ${cmd} ${filter} vattrtest
185 done
186 ],
187 [ignore],
188 [--noconfig
189 .........    /opt/vattrtest
190 .........  a /opt/vattrtest/a
191 .........  d /opt/vattrtest/d
192 .........  g /opt/vattrtest/g
193 .........  l /opt/vattrtest/l
194 .........  m /opt/vattrtest/m
195 .........  r /opt/vattrtest/r
196 --noghost
197 .........    /opt/vattrtest
198 .........  a /opt/vattrtest/a
199 .........  c /opt/vattrtest/c
200 .........  c /opt/vattrtest/cn
201 .........  d /opt/vattrtest/d
202 .........  l /opt/vattrtest/l
203 .........  m /opt/vattrtest/m
204 .........  r /opt/vattrtest/r
205 --noartifact
206 .........    /opt/vattrtest
207 .........  c /opt/vattrtest/c
208 .........  c /opt/vattrtest/cn
209 .........  d /opt/vattrtest/d
210 .........  g /opt/vattrtest/g
211 .........  l /opt/vattrtest/l
212 .........  m /opt/vattrtest/m
213 .........  r /opt/vattrtest/r
214 ],
215 [])
216 AT_CLEANUP
217
218 # Test verify script success & failure behavior
219 # Ignoring stderr spew for now
220 AT_SETUP([verifyscript failure])
221 AT_KEYWORDS([verify])
222 AT_CHECK([
223 RPMDB_CLEAR
224 RPMDB_INIT
225
226 rm -rf "${TOPDIR}"
227 runroot rpmbuild --quiet -bb /data/SPECS/verifyscript.spec
228 runroot rpm -U --nodeps /build/RPMS/noarch/verifyscript-1.0-1.noarch.rpm
229 rm -f "${RPMTEST}"/var/checkme
230 runroot rpm -V --nodeps verifyscript
231 ],
232 [1],
233 [],
234 [ignore])
235 AT_CLEANUP
236
237 AT_SETUP([verifyscript success])
238 AT_KEYWORDS([verify])
239 AT_CHECK([
240 RPMDB_CLEAR
241 RPMDB_INIT
242
243 rm -rf "${TOPDIR}"
244 runroot rpmbuild --quiet -bb /data/SPECS/verifyscript.spec
245 runroot rpm -U --nodeps /build/RPMS/noarch/verifyscript-1.0-1.noarch.rpm
246 touch "${RPMTEST}"/var/checkme
247 runroot rpm -V --nodeps verifyscript
248 ],
249 [0],
250 [],
251 [])
252 AT_CLEANUP
253
254 # ------------------------------
255 # shared file timestamp behavior
256 AT_SETUP([shared file timestamp behavior])
257 AT_KEYWORDS([verify])
258 AT_CHECK([
259 RPMDB_CLEAR
260 RPMDB_INIT
261 rm -rf "${TOPDIR}"
262
263 # create packages sharing a file but with different timestamp
264 for p in "one" "two"; do
265     runroot rpmbuild --quiet -bb \
266         --define "pkg $p" \
267         --define "filedata same_stuff" \
268           /data/SPECS/conflicttest.spec
269     sleep 1
270 done
271
272 # first instance of a shared file is the one that actually gets created,
273 # force the order so we know what to expect as these dont depend on each other
274 runroot rpm -U --noorder /build/RPMS/noarch/conflictone-1.0-1.noarch.rpm /build/RPMS/noarch/conflicttwo-1.0-1.noarch.rpm
275 runroot rpm -e conflicttwo
276 runroot rpm -Va --nouser --nogroup
277 ],
278 [0],
279 [],
280 [])
281 AT_CLEANUP
282
283 # ------------------------------
284 # Upgraded verification with min_writes 1 (files)
285 AT_SETUP([Upgraded verification with min_writes 1 (files)])
286 AT_KEYWORDS([upgrade verify min_writes])
287 AT_CHECK([
288 RPMDB_CLEAR
289 RPMDB_INIT
290 tf="${RPMTEST}"/opt/foo
291 rm -rf "${tf}" "${tf}".rpm*
292 rm -rf "${TOPDIR}"
293
294 for v in "1.0" "2.0"; do
295     runroot rpmbuild --quiet -bb \
296         --define "ver $v" \
297         --define "filetype file" \
298         --define "filedata foo" \
299           /data/SPECS/replacetest.spec
300 done
301
302 for v in "3.0" "4.0"; do
303     runroot rpmbuild --quiet -bb \
304         --define "ver $v" \
305         --define "filetype file" \
306         --define "filedata fox" \
307           /data/SPECS/replacetest.spec
308 done
309
310 runroot rpm -i /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
311 cat "${tf}"
312 touch -t 201703171717 ${tf}
313
314 runroot rpm -U \
315         --define "_minimize_writes 1" \
316          /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
317 runroot rpm -Va --nouser --nogroup replacetest
318 cat "${tf}"
319
320 runroot rpm -U \
321         --define "_minimize_writes 1" \
322         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm
323 runroot rpm -Va  --nouser --nogroup replacetest
324 cat "${tf}"
325
326 echo "xx" > "${tf}"
327 cat "${tf}"
328
329 runroot rpm -U \
330         --define "_minimize_writes 1" \
331         /build/RPMS/noarch/replacetest-4.0-1.noarch.rpm
332 runroot rpm -Va  --nouser --nogroup replacetest
333 cat "${tf}"
334
335 touch -t 201703171717 ${tf}
336
337 runroot rpm -U --oldpackage \
338         --define "_minimize_writes 1" \
339         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm
340 runroot rpm -Va  --nouser --nogroup replacetest
341 cat "${tf}"
342 ],
343 [0],
344 [foo
345 foo
346 fox
347 xx
348 fox
349 fox
350 ],
351 [])
352 AT_CLEANUP
353
354
355 # ------------------------------
356 # Upgraded verification with min_writes 2 (files)
357 AT_SETUP([Upgraded verification with min_writes 2 (files)])
358 AT_KEYWORDS([upgrade verify min_writes])
359 AT_CHECK([
360 RPMDB_CLEAR
361 RPMDB_INIT
362 tf="${RPMTEST}"/opt/foo
363 rm -rf "${tf}" "${tf}".rpm*
364 rm -rf "${TOPDIR}"
365
366 for v in "1.0" "2.0"; do
367     runroot rpmbuild --quiet -bb \
368         --define "ver $v" \
369         --define "filetype file" \
370         --define "filedata foo" \
371           /data/SPECS/replacetest.spec
372 done
373
374 for v in "3.0" "4.0"; do
375     runroot rpmbuild --quiet -bb \
376         --define "ver $v" \
377         --define "filetype file" \
378         --define "filedata fox" \
379           /data/SPECS/replacetest.spec
380 done
381
382 runroot rpm -i /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
383 cat "${tf}"
384 touch -t 201703171717 ${tf}
385
386 runroot rpm -Uvv --fsmdebug \
387         --define "_minimize_writes 1" \
388          /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm > output.txt 2>&1
389 runroot rpm -Va --nouser --nogroup replacetest
390 grep -c "touch" output.txt
391 cat "${tf}"
392
393
394 runroot rpm -Uvv --fsmdebug \
395         --define "_minimize_writes 1" \
396         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm  > output.txt 2>&1
397 runroot rpm -Va  --nouser --nogroup replacetest
398 grep -c "touch" output.txt
399 cat "${tf}"
400 echo "xx" > "${tf}"
401 cat "${tf}"
402
403 runroot rpm -Uvv --fsmdebug \
404         --define "_minimize_writes 1" \
405         /build/RPMS/noarch/replacetest-4.0-1.noarch.rpm  > output.txt 2>&1
406 runroot rpm -Va  --nouser --nogroup replacetest
407 grep -c "touch" output.txt
408 cat "${tf}"
409
410 touch -t 201703171717 ${tf}
411
412 runroot rpm -U -Uvv --fsmdebug  --oldpackage \
413         --define "_minimize_writes 1" \
414         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm  > output.txt 2>&1
415 runroot rpm -Va  --nouser --nogroup replacetest
416 grep -c  "touch" output.txt
417 cat "${tf}"
418 ],
419 [0],
420 [foo
421 2
422 foo
423 1
424 fox
425 xx
426 1
427 fox
428 2
429 fox
430 ],
431 [])
432 AT_CLEANUP
433
434 # ------------------------------
435 # Upgraded verification with min_writes 3 (LINKs)
436 AT_SETUP([Upgraded verification with min_writes 3 (LINKs)])
437 AT_KEYWORDS([upgrade verify min_writes])
438 AT_CHECK([
439 RPMDB_CLEAR
440 RPMDB_INIT
441 tf="${RPMTEST}"/opt/foo
442 rm -rf "${tf}" "${tf}".rpm*
443 rm -rf "${TOPDIR}"
444
445 for v in "1.0" "2.0"; do
446     runroot rpmbuild --quiet -bb \
447         --define "ver $v" \
448         --define "filetype link" \
449         --define "filedata foo" \
450           /data/SPECS/replacetest.spec
451 done
452
453 for v in "3.0" "4.0"; do
454     runroot rpmbuild --quiet -bb \
455         --define "ver $v" \
456         --define "filetype link" \
457         --define "filedata fox" \
458           /data/SPECS/replacetest.spec
459 done
460
461 runroot rpm -i /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
462 readlink "${tf}"
463
464 runroot rpm -U \
465         --define "_minimize_writes 1" \
466          /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm
467 runroot rpm -Va --nouser --nogroup replacetest
468 readlink "${tf}"
469
470 runroot rpm -U \
471         --define "_minimize_writes 1" \
472         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm
473 runroot rpm -Va  --nouser --nogroup replacetest
474 readlink "${tf}"
475
476 ln -sf "xx" "${tf}"
477 readlink "${tf}"
478
479 runroot rpm -U \
480         --define "_minimize_writes 1" \
481         /build/RPMS/noarch/replacetest-4.0-1.noarch.rpm
482 runroot rpm -Va  --nouser --nogroup replacetest
483 readlink "${tf}"
484
485 runroot rpm -U --oldpackage \
486         --define "_minimize_writes 1" \
487         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm
488 runroot rpm -Va  --nouser --nogroup replacetest
489 readlink "${tf}"
490 ],
491 [0],
492 [foo
493 foo
494 fox
495 xx
496 fox
497 fox
498 ],
499 [])
500 AT_CLEANUP
501 # ------------------------------
502 # Upgraded verification with min_writes 4 (LINKs)
503 AT_SETUP([Upgraded verification with min_writes 4 (LINKs)])
504 AT_KEYWORDS([upgrade verify min_writes])
505 AT_CHECK([
506 RPMDB_CLEAR
507 RPMDB_INIT
508 tf="${RPMTEST}"/opt/foo
509 rm -rf "${tf}" "${tf}".rpm*
510 rm -rf "${TOPDIR}"
511
512 for v in "1.0" "2.0"; do
513     runroot rpmbuild --quiet -bb \
514         --define "ver $v" \
515         --define "filetype link" \
516         --define "filedata foo" \
517           /data/SPECS/replacetest.spec
518 done
519
520 for v in "3.0" "4.0"; do
521     runroot rpmbuild --quiet -bb \
522         --define "ver $v" \
523         --define "filetype link" \
524         --define "filedata fox" \
525           /data/SPECS/replacetest.spec
526 done
527
528 runroot rpm -i /build/RPMS/noarch/replacetest-1.0-1.noarch.rpm
529 readlink "${tf}"
530
531 runroot rpm -Uvv --fsmdebug \
532         --define "_minimize_writes 1" \
533          /build/RPMS/noarch/replacetest-2.0-1.noarch.rpm > output.txt 2>&1
534 runroot rpm -Va --nouser --nogroup replacetest
535 grep -c "touch" output.txt
536 readlink "${tf}"
537
538
539 runroot rpm -Uvv --fsmdebug \
540         --define "_minimize_writes 1" \
541         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm > output.txt 2>&1
542 runroot rpm -Va  --nouser --nogroup replacetest
543 grep -c "touch" output.txt
544 readlink "${tf}"
545 ln -sf "xx" "${tf}"
546 readlink "${tf}"
547
548 runroot rpm -Uvv --fsmdebug \
549         --define "_minimize_writes 1" \
550         /build/RPMS/noarch/replacetest-4.0-1.noarch.rpm  > output.txt 2>&1
551 runroot rpm -Va  --nouser --nogroup replacetest
552 grep -c "touch" output.txt
553 readlink "${tf}"
554
555 runroot rpm -U -Uvv --fsmdebug  --oldpackage \
556         --define "_minimize_writes 1" \
557         /build/RPMS/noarch/replacetest-3.0-1.noarch.rpm  > output.txt 2>&1
558 runroot rpm -Va  --nouser --nogroup replacetest
559 grep -c  "touch" output.txt
560 readlink "${tf}"
561 ],
562 [0],
563 [foo
564 2
565 foo
566 1
567 fox
568 xx
569 1
570 fox
571 2
572 fox
573 ],
574 [])
575 AT_CLEANUP