Add bunch of verification tests to the test suite
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 7 Sep 2010 08:14:56 +0000 (11:14 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 7 Sep 2010 08:14:56 +0000 (11:14 +0300)
- Basic tests for dependency, file and verifyscript error + success
  behavior.
- Using lua for verifyscript to avoid issues with empty test-root

tests/Makefile.am
tests/data/SPECS/verifyscript.spec [new file with mode: 0644]
tests/rpmtests.at
tests/rpmverify.at [new file with mode: 0644]

index e9afdf6..97644c7 100644 (file)
@@ -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 (file)
index 0000000..c6bd732
--- /dev/null
@@ -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 <lua>
+if not posix.access("/var/checkme", "f") then
+   error("bad")
+end
index 43637e7..315318f 100644 (file)
@@ -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 (file)
index 0000000..87bcdee
--- /dev/null
@@ -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