1 # rpmi.at: test various aspects of rpm install
3 # Copyright (C) 2007 Ralf Corsépius <corsepiu@fedoraproject.org>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 AT_BANNER([RPM install tests])
21 # ------------------------------
22 # Check if rpm -U *.src.rpm works
23 AT_SETUP([rpm -U *.src.rpm])
24 AT_KEYWORDS([install])
29 -U /data/SRPMS/hello-1.0-1.src.rpm
36 # ------------------------------
37 # Check if rpm -i *.src.rpm works
38 AT_SETUP([rpm -i *.src.rpm])
39 AT_KEYWORDS([install])
44 -i /data/SRPMS/hello-1.0-1.src.rpm
51 # ------------------------------
52 # Various error behavior tests
54 AT_SETUP([rpm -i <nonexistent file>])
55 AT_KEYWORDS([install])
65 # XXX hmm, --nomanifest seems broken atm...
66 AT_SETUP([rpm -i --nomanifest <garbage text file>])
67 AT_KEYWORDS([install])
69 junk="${RPMTEST}/textfile"
70 cat << EOF > "${junk}"
76 -Uvv --nomanifest /textfile
83 AT_SETUP([rpm -i <garbage text file])
84 AT_KEYWORDS([install])
86 junk="${RPMTEST}/not_an.rpm"
87 cat << EOF > "${junk}"
100 # ------------------------------
101 # Test normal upgrade
102 AT_SETUP([rpm -U upgrade to newer])
108 for v in "1.0" "2.0"; do
109 runroot rpmbuild --quiet -bb \
111 /data/SPECS/versiontest.spec
114 runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
115 runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
116 runroot rpm -q versiontest
119 [versiontest-2.0-1.noarch
124 # Test upgrading to older package (should fail)
125 AT_SETUP([rpm -U upgrade to older])
130 runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
131 runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
135 [ package versiontest-2.0-1.noarch (which is newer than versiontest-1.0-1.noarch) is already installed
139 # Test downgrading to older package with --oldpackage
140 AT_SETUP([rpm -U --oldpackage downgrade])
145 runroot rpm -U "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
146 runroot rpm -U --oldpackage "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
147 runroot rpm -q versiontest
150 [versiontest-1.0-1.noarch
155 # Test upgrade of different versions in same transaction
156 AT_SETUP([rpm -U two versions of same package 1])
162 "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
163 "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
164 runroot rpm -q versiontest
167 [Preparing packages...
168 versiontest-2.0-1.noarch
169 versiontest-2.0-1.noarch
171 [warning: package versiontest-1.0-1.noarch was already added, replacing with versiontest-2.0-1.noarch
175 # Test upgrade of different versions in same transaction
176 AT_SETUP([rpm -U two versions of same package 2])
182 "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm \
183 "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
184 runroot rpm -q versiontest
187 [Preparing packages...
188 versiontest-2.0-1.noarch
189 versiontest-2.0-1.noarch
191 [warning: package versiontest-2.0-1.noarch was already added, skipping versiontest-1.0-1.noarch
195 # Test upgrade of obsoleted package in same transaction
196 AT_SETUP([rpm -U obsoleted package 1])
201 runroot rpmbuild --quiet -bb \
203 --define "obs deptest-two" \
204 /data/SPECS/deptest.spec
205 runroot rpmbuild --quiet -bb \
207 /data/SPECS/deptest.spec
211 "${TOPDIR}"/RPMS/noarch/deptest-two-1.0-1.noarch.rpm \
212 "${TOPDIR}"/RPMS/noarch/deptest-one-1.0-1.noarch.rpm
213 runroot rpm -q deptest-one
216 [Preparing packages...
217 deptest-one-1.0-1.noarch
218 deptest-one-1.0-1.noarch
220 [warning: package deptest-two-1.0-1.noarch was already added, replacing with deptest-one-1.0-1.noarch
224 # Test upgrade of obsoleted package in same transaction
225 AT_SETUP([rpm -U obsoleted package 2])
230 runroot rpmbuild --quiet -bb \
232 --define "obs deptest-two" \
233 /data/SPECS/deptest.spec
234 runroot rpmbuild --quiet -bb \
236 /data/SPECS/deptest.spec
240 "${TOPDIR}"/RPMS/noarch/deptest-one-1.0-1.noarch.rpm \
241 "${TOPDIR}"/RPMS/noarch/deptest-two-1.0-1.noarch.rpm
242 runroot rpm -q deptest-one
245 [Preparing packages...
246 deptest-one-1.0-1.noarch
247 deptest-one-1.0-1.noarch
249 [warning: package deptest-one-1.0-1.noarch was already added, skipping deptest-two-1.0-1.noarch
253 # Test install of two different versions in same transaction
254 AT_SETUP([rpm -i two versions of same package])
260 "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
261 "${TOPDIR}"/RPMS/noarch/versiontest-2.0-1.noarch.rpm
262 runroot rpm -q versiontest
265 [versiontest-2.0-1.noarch
266 versiontest-1.0-1.noarch
271 # Test install of two different versions in same transaction
272 # TODO: test only one was installed
273 AT_SETUP([rpm -i identical versions of same package])
279 "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm \
280 "${TOPDIR}"/RPMS/noarch/versiontest-1.0-1.noarch.rpm
281 runroot rpm -q versiontest
284 [versiontest-1.0-1.noarch
289 # TODO: the same with epoch vs no epoch
291 AT_SETUP([rpm -U with invalid --relocate])
292 AT_KEYWORDS([install relocate])
297 runroot rpmbuild --quiet -bb /data/SPECS/hello-script.spec
299 runroot rpm -U --test --ignoreos --relocate /usr=/opt \
300 "${TOPDIR}"/RPMS/noarch/hello-script-1.0-1.noarch.rpm
304 [ path /usr in package hello-script-1.0-1.noarch is not relocatable
308 AT_SETUP([rpm -U --badreloc with invalid --relocate])
309 AT_KEYWORDS([install relocate])
314 runroot rpmbuild --quiet -bb /data/SPECS/hello-script.spec
316 runroot rpm -U --test --ignoreos --badreloc --relocate /usr=/opt \
317 "${TOPDIR}"/RPMS/noarch/hello-script-1.0-1.noarch.rpm