323 lines
7.0 KiB
Plaintext
323 lines
7.0 KiB
Plaintext
# rpmi.at: test various aspects of rpm install
|
|
#
|
|
# Copyright (C) 2007 Ralf Corsépius <corsepiu@fedoraproject.org>
|
|
#
|
|
# 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}
|
|
|
|
runroot rpm \
|
|
-U /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}
|
|
|
|
runroot rpm \
|
|
-i /data/SRPMS/hello-1.0-1.src.rpm
|
|
],
|
|
[0],
|
|
[ignore],
|
|
[ignore])
|
|
AT_CLEANUP
|
|
|
|
# ------------------------------
|
|
# Various error behavior tests
|
|
#
|
|
AT_SETUP([rpm -i <nonexistent file>])
|
|
AT_KEYWORDS([install])
|
|
AT_CHECK([
|
|
runroot rpm \
|
|
-i no_such_file
|
|
],
|
|
[1],
|
|
[ignore],
|
|
[ignore])
|
|
AT_CLEANUP
|
|
|
|
# XXX hmm, --nomanifest seems broken atm...
|
|
AT_SETUP([rpm -i --nomanifest <garbage text file>])
|
|
AT_KEYWORDS([install])
|
|
AT_CHECK([
|
|
junk="${RPMTEST}/textfile"
|
|
cat << EOF > "${junk}"
|
|
no_such.file
|
|
not_an.rpm
|
|
EOF
|
|
|
|
runroot rpm \
|
|
-Uvv --nomanifest /textfile
|
|
],
|
|
[1],
|
|
[ignore],
|
|
[ignore])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([rpm -i <garbage text file])
|
|
AT_KEYWORDS([install])
|
|
AT_CHECK([
|
|
junk="${RPMTEST}/not_an.rpm"
|
|
cat << EOF > "${junk}"
|
|
no_such.file
|
|
not_pkg.rpm
|
|
EOF
|
|
|
|
runroot rpm \
|
|
-Uvv /not_an.rpm
|
|
],
|
|
[2],
|
|
[ignore],
|
|
[ignore])
|
|
AT_CLEANUP
|
|
|
|
# ------------------------------
|
|
# Test normal upgrade
|
|
AT_SETUP([rpm -U upgrade to newer])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
rm -rf "${TOPDIR}"
|
|
|
|
for v in "1.0" "2.0"; do
|
|
runroot rpmbuild --quiet -bb \
|
|
--define "ver $v" \
|
|
/data/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
|
|
RPMDB_INIT
|
|
|
|
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
|
|
RPMDB_INIT
|
|
|
|
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 1])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
|
|
runroot rpm -Uv \
|
|
"${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
|
|
"${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
|
|
runroot rpm -q versiontest
|
|
],
|
|
[0],
|
|
[Preparing packages...
|
|
versiontest-2.0-1.noarch
|
|
versiontest-2.0-1.noarch
|
|
],
|
|
[warning: package versiontest-1.0-1.noarch was already added, replacing with versiontest-2.0-1.noarch
|
|
])
|
|
AT_CLEANUP
|
|
|
|
# Test upgrade of different versions in same transaction
|
|
AT_SETUP([rpm -U two versions of same package 2])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
|
|
runroot rpm -Uv \
|
|
"${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm \
|
|
"${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
|
|
runroot rpm -q versiontest
|
|
],
|
|
[0],
|
|
[Preparing packages...
|
|
versiontest-2.0-1.noarch
|
|
versiontest-2.0-1.noarch
|
|
],
|
|
[warning: package versiontest-2.0-1.noarch was already added, skipping versiontest-1.0-1.noarch
|
|
])
|
|
AT_CLEANUP
|
|
|
|
# Test upgrade of obsoleted package in same transaction
|
|
AT_SETUP([rpm -U obsoleted package 1])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
|
|
runroot rpmbuild --quiet -bb \
|
|
--define "pkg one" \
|
|
--define "obs deptest-two" \
|
|
/data/SPECS/deptest.spec
|
|
runroot rpmbuild --quiet -bb \
|
|
--define "pkg two" \
|
|
/data/SPECS/deptest.spec
|
|
|
|
|
|
runroot rpm -Uv \
|
|
"${TOPDIR}"/RPMS/noarch/deptest-two-1.0-1.noarch.rpm \
|
|
"${TOPDIR}"/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
|
|
runroot rpm -q deptest-one
|
|
],
|
|
[0],
|
|
[Preparing packages...
|
|
deptest-one-1.0-1.noarch
|
|
deptest-one-1.0-1.noarch
|
|
],
|
|
[warning: package deptest-two-1.0-1.noarch was already added, replacing with deptest-one-1.0-1.noarch
|
|
])
|
|
AT_CLEANUP
|
|
|
|
# Test upgrade of obsoleted package in same transaction
|
|
AT_SETUP([rpm -U obsoleted package 2])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
|
|
runroot rpmbuild --quiet -bb \
|
|
--define "pkg one" \
|
|
--define "obs deptest-two" \
|
|
/data/SPECS/deptest.spec
|
|
runroot rpmbuild --quiet -bb \
|
|
--define "pkg two" \
|
|
/data/SPECS/deptest.spec
|
|
|
|
|
|
runroot rpm -Uv \
|
|
"${TOPDIR}"/RPMS/noarch/deptest-one-1.0-1.noarch.rpm \
|
|
"${TOPDIR}"/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
|
|
runroot rpm -q deptest-one
|
|
],
|
|
[0],
|
|
[Preparing packages...
|
|
deptest-one-1.0-1.noarch
|
|
deptest-one-1.0-1.noarch
|
|
],
|
|
[warning: package deptest-one-1.0-1.noarch was already added, skipping deptest-two-1.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
|
|
RPMDB_INIT
|
|
|
|
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
|
|
RPMDB_INIT
|
|
|
|
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
|
|
|
|
AT_SETUP([rpm -U with invalid --relocate])
|
|
AT_KEYWORDS([install relocate])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
|
|
runroot rpmbuild --quiet -bb /data/SPECS/hello-script.spec
|
|
|
|
runroot rpm -U --test --ignoreos --relocate /usr=/opt \
|
|
"${TOPDIR}"/RPMS/noarch/hello-script-1.0-1.noarch.rpm
|
|
],
|
|
[1],
|
|
[],
|
|
[ path /usr in package hello-script-1.0-1.noarch is not relocatable
|
|
])
|
|
AT_CLEANUP
|
|
|
|
AT_SETUP([rpm -U --badreloc with invalid --relocate])
|
|
AT_KEYWORDS([install relocate])
|
|
AT_CHECK([
|
|
RPMDB_CLEAR
|
|
RPMDB_INIT
|
|
|
|
runroot rpmbuild --quiet -bb /data/SPECS/hello-script.spec
|
|
|
|
runroot rpm -U --test --ignoreos --badreloc --relocate /usr=/opt \
|
|
"${TOPDIR}"/RPMS/noarch/hello-script-1.0-1.noarch.rpm
|
|
],
|
|
[0],
|
|
[],
|
|
[])
|
|
AT_CLEANUP
|