# rpmvercmp.at: rpm version comparison tests AT_BANNER([RPM version comparison]) # ------------------------------ # 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 runroot rpm -q versiontest ], [0], [versiontest-2.0-1.noarch ], []) 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], [], [ package versiontest-2.0-1.noarch (which is newer than versiontest-1.0-1.noarch) is already installed ]) 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 runroot rpm -q versiontest ], [0], [versiontest-1.0-1.noarch ], [ignore]) AT_CLEANUP # Test upgrade of different versions in same transaction 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 runroot rpm -q versiontest ], [0], [versiontest-2.0-1.noarch ], []) AT_CLEANUP # Test install of two different versions in same transaction 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 runroot rpm -q versiontest ], [0], [versiontest-2.0-1.noarch versiontest-1.0-1.noarch ], []) 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 runroot rpm -i \ "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \ "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm runroot rpm -q versiontest ], [0], [versiontest-1.0-1.noarch ], []) AT_CLEANUP # TODO: the same with epoch vs no epoch