# rpmverify.at: rpm verification tests AT_BANNER([RPM verification]) # ------------------------------ # AT_SETUP([dependency problems]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT rm -rf "${TOPDIR}" runroot rpmbuild --quiet -bb \ --define "pkg one" \ --define "reqs deptest-two" \ /data/SPECS/deptest.spec runroot rpm -U --nodeps "${TOPDIR}"/RPMS/noarch/deptest-one-1.0-1.noarch.rpm runroot rpm -Va ], [1], [Unsatisfied dependencies for deptest-one-1.0-1.noarch: deptest-two is needed by (installed) deptest-one-1.0-1.noarch ], []) AT_CLEANUP # Test file verify when no errors expected. # Ignore dependencies here as we're not testing for them, and # --nogroup --nouser is required when running tests as non-root. AT_SETUP([files with no problems]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \ /data/RPMS/hello-1.0-1.i386.rpm runroot rpm -Va --nodeps --nouser --nogroup ], [0], [], []) AT_CLEANUP # Test file verify when no errors expected in verbose mode. AT_SETUP([files with no problems in verbose mode]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \ /data/RPMS/hello-1.0-1.i386.rpm runroot rpm -Vva --nodeps --nouser --nogroup ], [0], [......... /usr/local/bin/hello ......... /usr/share/doc/hello-1.0 ......... d /usr/share/doc/hello-1.0/FAQ ], []) AT_CLEANUP # Test file verify after mutilating the files a bit. AT_SETUP([verify from db, with problems present]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \ /data/RPMS/hello-1.0-1.i386.rpm rm -f "${RPMTEST}"/usr/share/doc/hello-1.0/FAQ chmod u-x "${RPMTEST}"/usr/local/bin/hello dd if=/dev/zero of="${RPMTEST}"/usr/local/bin/hello \ conv=notrunc bs=1 seek=5 count=6 2> /dev/null runroot rpm -Va --nodeps --nouser --nogroup ], [1], [.M5....T. /usr/local/bin/hello missing d /usr/share/doc/hello-1.0/FAQ ], []) AT_CLEANUP # Test file verify from original package after mutilating the files a bit. AT_SETUP([verify from package, with problems present]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos \ /data/RPMS/hello-1.0-1.i386.rpm rm -f "${RPMTEST}"/usr/share/doc/hello-1.0/FAQ chmod u-x "${RPMTEST}"/usr/local/bin/hello dd if=/dev/zero of="${RPMTEST}"/usr/local/bin/hello \ conv=notrunc bs=1 seek=5 count=6 2> /dev/null runroot rpm -Vp --nodeps --nouser --nogroup /data/RPMS/hello-1.0-1.i386.rpm ], [1], [.M5....T. /usr/local/bin/hello missing d /usr/share/doc/hello-1.0/FAQ ], []) AT_CLEANUP # Test verify script success & failure behavior # Ignoring stderr spew for now AT_SETUP([verifyscript failure]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT rm -rf "${TOPDIR}" runroot rpmbuild --quiet -bb /data/SPECS/verifyscript.spec runroot rpm -U --nodeps "${TOPDIR}"/RPMS/noarch/verifyscript-1.0-1.noarch.rpm rm -f "${RPMTEST}"/var/checkme runroot rpm -V --nodeps verifyscript ], [1], [], [ignore]) AT_CLEANUP AT_SETUP([verifyscript success]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT rm -rf "${TOPDIR}" runroot rpmbuild --quiet -bb /data/SPECS/verifyscript.spec runroot rpm -U --nodeps "${TOPDIR}"/RPMS/noarch/verifyscript-1.0-1.noarch.rpm touch "${RPMTEST}"/var/checkme runroot rpm -V --nodeps verifyscript ], [0], [], []) AT_CLEANUP # ------------------------------ # shared file timestamp behavior AT_SETUP([shared file timestamp behavior]) AT_KEYWORDS([verify]) AT_CHECK([ RPMDB_CLEAR RPMDB_INIT rm -rf "${TOPDIR}" # create packages sharing a file but with different timestamp for p in "one" "two"; do runroot rpmbuild --quiet -bb \ --define "pkg $p" \ --define "filedata same_stuff" \ /data/SPECS/conflicttest.spec sleep 1 done # first instance of a shared file is the one that actually gets created, # force the order so we know what to expect as these dont depend on each other runroot rpm -U --noorder "${TOPDIR}"/RPMS/noarch/conflictone-1.0-1.noarch.rpm "${TOPDIR}"/RPMS/noarch/conflicttwo-1.0-1.noarch.rpm runroot rpm -e conflicttwo runroot rpm -Va --nouser --nogroup ], [0], [], []) AT_CLEANUP