From 7562d2743baf27fda1b6dee22d0574cd265907b7 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 7 Sep 2010 11:14:56 +0300 Subject: [PATCH] Add bunch of verification tests to the test suite - Basic tests for dependency, file and verifyscript error + success behavior. - Using lua for verifyscript to avoid issues with empty test-root --- tests/Makefile.am | 2 + tests/data/SPECS/verifyscript.spec | 16 +++++ tests/rpmtests.at | 1 + tests/rpmverify.at | 122 +++++++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 tests/data/SPECS/verifyscript.spec create mode 100644 tests/rpmverify.at diff --git a/tests/Makefile.am b/tests/Makefile.am index e9afdf6..97644c7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -16,6 +16,7 @@ EXTRA_DIST += local.at $(TESTSUITE) TESTSUITE_AT = rpmtests.at TESTSUITE_AT += rpmgeneral.at TESTSUITE_AT += rpmquery.at +TESTSUITE_AT += rpmverify.at TESTSUITE_AT += rpmdb.at TESTSUITE_AT += rpmbuild.at TESTSUITE_AT += rpmi.at @@ -35,6 +36,7 @@ EXTRA_DIST += data/SPECS/configtest.spec EXTRA_DIST += data/SPECS/flangtest.spec EXTRA_DIST += data/SPECS/symlinktest.spec EXTRA_DIST += data/SPECS/deptest.spec +EXTRA_DIST += data/SPECS/verifyscript.spec EXTRA_DIST += data/SOURCES/hello-1.0-modernize.patch EXTRA_DIST += data/SOURCES/hello-1.0.tar.gz EXTRA_DIST += data/SOURCES/hello-2.0.tar.gz diff --git a/tests/data/SPECS/verifyscript.spec b/tests/data/SPECS/verifyscript.spec new file mode 100644 index 0000000..c6bd732 --- /dev/null +++ b/tests/data/SPECS/verifyscript.spec @@ -0,0 +1,16 @@ +Name: verifyscript +Version: 1.0 +Release: 1 +Summary: Testing verifyscript behavior + +Group: Testing +License: GPL +BuildArch: noarch + +%description +%{summary} + +%verifyscript -p +if not posix.access("/var/checkme", "f") then + error("bad") +end diff --git a/tests/rpmtests.at b/tests/rpmtests.at index 43637e7..315318f 100644 --- a/tests/rpmtests.at +++ b/tests/rpmtests.at @@ -1,5 +1,6 @@ m4_include([rpmgeneral.at]) m4_include([rpmquery.at]) +m4_include([rpmverify.at]) m4_include([rpmdb.at]) m4_include([rpmi.at]) m4_include([rpmbuild.at]) diff --git a/tests/rpmverify.at b/tests/rpmverify.at new file mode 100644 index 0000000..87bcdee --- /dev/null +++ b/tests/rpmverify.at @@ -0,0 +1,122 @@ +# rpmverify.at: rpm verification tests + +AT_BANNER([RPM verification]) + +# ------------------------------ +# +AT_SETUP([dependency problems]) +AT_KEYWORDS([verify]) +AT_CHECK([ +RPMDB_CLEAR +rm -rf "${TOPDIR}" + +run rpmbuild --quiet -bb \ + --define "pkg one" \ + --define "reqs deptest-two" \ + ${RPMDATA}/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 + +tpkg="hello-1.0-1.i386.rpm" +cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}" + +runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos "${tpkg}" +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 + +tpkg="hello-1.0-1.i386.rpm" +cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}" + +runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos "${tpkg}" +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 files with problems present]) +AT_KEYWORDS([verify]) +AT_CHECK([ +RPMDB_CLEAR + +tpkg="hello-1.0-1.i386.rpm" +cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}" + +runroot rpm -U --nodeps --noscripts --ignorearch --ignoreos "${tpkg}" +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], +[5..T...M. /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 + +rm -rf "${TOPDIR}" +run rpmbuild --quiet -bb "${RPMDATA}"/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 + +rm -rf "${TOPDIR}" +run rpmbuild --quiet -bb "${RPMDATA}"/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 -- 2.7.4