# rpmi.at: test various aspects of rpm install # # Copyright (C) 2007 Ralf Corsépius # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA AT_BANNER([RPM install tests]) # ------------------------------ # Check if rpm -U *.src.rpm works AT_SETUP([rpm -U *.src.rpm]) AT_KEYWORDS([install]) AT_CHECK([ rm -rf ${TOPDIR} run rpm \ -U "${abs_srcdir}"/data/SRPMS/hello-1.0-1.src.rpm ], [0], [ignore], [ignore]) AT_CLEANUP # ------------------------------ # Check if rpm -i *.src.rpm works AT_SETUP([rpm -i *.src.rpm]) AT_KEYWORDS([install]) AT_CHECK([ rm -rf ${TOPDIR} run rpm \ -i "${abs_srcdir}"/data/SRPMS/hello-1.0-1.src.rpm ], [0], [ignore], [ignore]) AT_CLEANUP # ------------------------------ # Various error behavior tests # AT_SETUP([rpm -i ]) AT_KEYWORDS([install]) AT_CHECK([ run rpm \ -i no_such_file ], [1], [ignore], [ignore]) AT_CLEANUP # XXX hmm, --nomanifest seems broken atm... AT_SETUP([rpm -i --nomanifest ]) AT_KEYWORDS([install]) AT_CHECK([ junk="${RPMTEST}/textfile" cat << EOF > "${junk}" no_such.file not_an.rpm EOF run rpm \ -Uvv --nomanifest "${junk}" ], [1], [ignore], [ignore]) AT_CLEANUP AT_SETUP([rpm -i "${junk}" no_such.file not_an.rpm EOF run rpm \ -Uvv "${junk}" ], [2], [ignore], [ignore]) AT_CLEANUP # ------------------------------ # 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