summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2008-11-21 23:29:54 +0200
committerPanu Matilainen <pmatilai@redhat.com>2008-11-21 23:29:54 +0200
commitab3e32ad97e1c2143560ceb1aafb7c7bb85cfdcc (patch)
treec10f87d9d6624110297db4c85803766703e3c8fc /tests
parent357a7170fa04b5e28c75f4669689cd727b1cfd20 (diff)
downloadrpm-ab3e32ad97e1c2143560ceb1aafb7c7bb85cfdcc.tar.gz
rpm-ab3e32ad97e1c2143560ceb1aafb7c7bb85cfdcc.tar.bz2
rpm-ab3e32ad97e1c2143560ceb1aafb7c7bb85cfdcc.zip
Add basic version comparison testing for install/upgrade
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/data/SPECS/versiontest.spec17
-rw-r--r--tests/rpmtests.at1
-rw-r--r--tests/rpmvercmp.at96
4 files changed, 116 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 680ce29c6..635504841 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -19,11 +19,13 @@ TESTSUITE_AT += rpmquery.at
TESTSUITE_AT += rpmdb.at
TESTSUITE_AT += rpmbuild.at
TESTSUITE_AT += rpmi.at
+TESTSUITE_AT = rpmvercmp.at
EXTRA_DIST += $(TESTSUITE_AT)
## testsuite data
EXTRA_DIST += data/SPECS/hello.spec
EXTRA_DIST += data/SPECS/foo.spec
+EXTRA_DIST += data/SPECS/versiontest.spec
EXTRA_DIST += data/SOURCES/hello-1.0.tar.gz
EXTRA_DIST += data/RPMS/foo-1.0-1.noarch.rpm
EXTRA_DIST += data/RPMS/hello-1.0-1.i386.rpm
diff --git a/tests/data/SPECS/versiontest.spec b/tests/data/SPECS/versiontest.spec
new file mode 100644
index 000000000..bc015e0d8
--- /dev/null
+++ b/tests/data/SPECS/versiontest.spec
@@ -0,0 +1,17 @@
+Name: versiontest
+Version: %{ver}
+Release: 1
+Summary: Testing version behavior
+
+Group: Testing
+License: GPL
+BuildArch: noarch
+
+%description
+%{summary}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
diff --git a/tests/rpmtests.at b/tests/rpmtests.at
index 43a57f903..975f3971b 100644
--- a/tests/rpmtests.at
+++ b/tests/rpmtests.at
@@ -3,3 +3,4 @@ m4_include([rpmquery.at])
m4_include([rpmdb.at])
m4_include([rpmi.at])
m4_include([rpmbuild.at])
+m4_include([rpmvercmp.at])
diff --git a/tests/rpmvercmp.at b/tests/rpmvercmp.at
new file mode 100644
index 000000000..08b8df8a7
--- /dev/null
+++ b/tests/rpmvercmp.at
@@ -0,0 +1,96 @@
+# rpmvercmp.at: rpm version comparison tests
+
+# ------------------------------
+# Test normal upgrade
+AT_SETUP([rpm -U upgrade to newer])
+AT_CHECK([
+RPMDB_CLEAR
+rm -rf "${TOPDIR}"
+
+for v in "1.0" "2.0"; do
+ run rpmbuild --quiet -bb \
+ --define "ver $v" \
+ ${RPMDATA}/SPECS/versiontest.spec
+done
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
+],
+[0],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# Test upgrading to older package (should fail)
+AT_SETUP([rpm -U upgrade to older])
+AT_CHECK([
+RPMDB_CLEAR
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
+],
+[2],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# Test downgrading to older package with --oldpackage
+AT_SETUP([rpm -U --oldpackage downgrade])
+AT_CHECK([
+RPMDB_CLEAR
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
+runroot rpm -U --oldpackage "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
+],
+[0],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# Test upgrade of different versions in same transaction
+# XXX test that only 2.0-1 was installed
+AT_SETUP([rpm -U two versions of same package])
+AT_CHECK([
+RPMDB_CLEAR
+
+runroot rpm -U \
+ "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
+],
+[0],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# Test install of two different versions in same transaction
+# TODO: test that both got installed
+AT_SETUP([rpm -i two versions of same package])
+AT_CHECK([
+RPMDB_CLEAR
+
+runroot rpm -i \
+ "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
+],
+[0],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# Test install of two different versions in same transaction
+# TODO: test only one was installed
+AT_SETUP([rpm -i identical versions of same package])
+AT_CHECK([
+RPMDB_CLEAR
+
+# TODO test just one was installed, this only emits warnings
+runroot rpm -ivh \
+ "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
+ "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
+],
+[0],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# TODO: the same with epoch vs no epoch