|
|
2ff057 |
# rpmdb.at: test rpmdb access
|
|
|
2ff057 |
#
|
|
|
2ff057 |
# Copyright (C) 2007 Ralf Corsépius <corsepiu@fedoraproject.org>
|
|
|
2ff057 |
#
|
|
|
2ff057 |
# This program is free software; you can redistribute it and/or modify
|
|
|
2ff057 |
# it under the terms of the GNU General Public License as published by
|
|
|
2ff057 |
# the Free Software Foundation; either version 2 of the License, or
|
|
|
2ff057 |
# (at your option) any later version.
|
|
|
2ff057 |
#
|
|
|
2ff057 |
# This program is distributed in the hope that it will be useful,
|
|
|
2ff057 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
2ff057 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
2ff057 |
# GNU General Public License for more details.
|
|
|
2ff057 |
#
|
|
|
2ff057 |
# You should have received a copy of the GNU General Public License
|
|
|
2ff057 |
# along with this program; if not, write to the Free Software
|
|
|
2ff057 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_BANNER([RPM database access])
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Attempt to initialize a rpmdb
|
|
|
2ff057 |
AT_SETUP([rpm --initdb])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[ignore],
|
|
|
2ff057 |
[ignore])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Run rpm -qa on an empty rpmdb
|
|
|
2ff057 |
AT_SETUP([rpm -qa])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb query])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
runroot rpm \
|
|
|
2ff057 |
-qa
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Run rpm -q <package> where <package> exists in the db.
|
|
|
2ff057 |
AT_SETUP([rpm -q foo])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb query])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -i \
|
|
|
2ff057 |
/data/RPMS/foo-1.0-1.noarch.rpm
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -q foo
|
|
|
2ff057 |
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[foo-1.0-1.noarch
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Run rpm -q <package>- where <package> exists in the db.
|
|
|
2ff057 |
AT_SETUP([rpm -q foo-])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb query])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -i \
|
|
|
2ff057 |
/data/RPMS/foo-1.0-1.noarch.rpm
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -q foo-
|
|
|
2ff057 |
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[1],
|
|
|
2ff057 |
[package foo- is not installed
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# install a noarch package into a local rpmdb without --relocate and --nodeps
|
|
|
2ff057 |
# * Should always succeed
|
|
|
2ff057 |
AT_SETUP([rpm -i *.noarch.rpm])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb install])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -i \
|
|
|
2ff057 |
/data/RPMS/foo-1.0-1.noarch.rpm
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# reinstall a noarch package (with no files)
|
|
|
2ff057 |
AT_SETUP([rpm -U --replacepkgs 1])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb install])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
tpkg="/data/RPMS/foo-1.0-1.noarch.rpm"
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -i "${tpkg}" &&
|
|
|
2ff057 |
runroot rpm -U --replacepkgs "${tpkg}" &&
|
|
|
2ff057 |
runroot rpm -qa
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[foo-1.0-1.noarch
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# reinstall a package with different file policies
|
|
|
2ff057 |
AT_SETUP([rpm -U --replacepkgs 2])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb install])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
AT_XFAIL_IF([test $RPM_XFAIL -ne 0])
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -U --nodeps --ignorearch "${tpkg}" &&
|
|
|
2ff057 |
runroot rpm -U --nodeps --ignorearch --nodocs --replacepkgs "${tpkg}" &&
|
|
|
2ff057 |
runroot rpm -e hello
|
|
|
2ff057 |
test -d "${RPMTEST}"/usr/share/doc/hello-2.0
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[1],
|
|
|
2ff057 |
[],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# reinstall a package with different file policies
|
|
|
2ff057 |
AT_SETUP([rpm --reinstall 1])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb install])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
tpkg="/data/RPMS/hello-2.0-1.i686.rpm"
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -U --nodeps --ignorearch "${tpkg}" &&
|
|
|
2ff057 |
runroot rpm --reinstall --nodeps --ignorearch --nodocs "${tpkg}" &&
|
|
|
2ff057 |
runroot rpm -e hello
|
|
|
2ff057 |
test -d "${RPMTEST}"/usr/share/doc/hello-2.0
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[1],
|
|
|
2ff057 |
[],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# install a package into a local rpmdb
|
|
|
2ff057 |
# * Shall only work with relocation
|
|
|
2ff057 |
# * Use --ignorearch because we don't know the arch
|
|
|
2ff057 |
AT_SETUP([rpm -i --relocate=.. *.i386.rpm])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb install])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -i \
|
|
|
2ff057 |
--noscripts --nodeps --ignorearch --relocate=/usr=/check \
|
|
|
2ff057 |
/data/RPMS/hello-1.0-1.i386.rpm
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# install a package into a local rpmdb
|
|
|
2ff057 |
# * Shall only work with relocation
|
|
|
2ff057 |
# * Use --ignorearch because we don't know the arch
|
|
|
2ff057 |
AT_SETUP([rpm -i --relocate=.. *.ppc64.rpm])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb install])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -i \
|
|
|
2ff057 |
--noscripts --nodeps --ignorearch --relocate=/usr=/check \
|
|
|
2ff057 |
/data/RPMS/hello-1.0-1.ppc64.rpm
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[ignore],
|
|
|
2ff057 |
[ignore])
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
AT_SETUP([rpmdb --rebuilddb])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -U --noscripts --nodeps --ignorearch \
|
|
|
2ff057 |
/data/RPMS/hello-1.0-1.i386.rpm
|
|
|
2ff057 |
runroot rpm -qa --qf "%{nevra} %{dbinstance}\n"
|
|
|
2ff057 |
runroot rpm -U --noscripts --nodeps --ignorearch \
|
|
|
2ff057 |
/data/RPMS/hello-2.0-1.i686.rpm
|
|
|
2ff057 |
runroot rpm -qa --qf "%{nevra} %{dbinstance}\n"
|
|
|
2ff057 |
runroot rpmdb --rebuilddb
|
|
|
2ff057 |
runroot rpm -qa --qf "%{nevra} %{dbinstance}\n"
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[],
|
|
|
2ff057 |
[hello-1.0-1.i386 1
|
|
|
2ff057 |
hello-2.0-1.i686 2
|
|
|
2ff057 |
hello-2.0-1.i686 1
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Attempt to initialize, rebuild and verify a db
|
|
|
2ff057 |
AT_SETUP([rpmdb --rebuilddb and verify empty database])
|
|
|
2ff057 |
AT_KEYWORDS([rpmdb])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
runroot rpmdb --rebuilddb
|
|
|
2ff057 |
runroot rpmdb --verifydb
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Install and verify status
|
|
|
2ff057 |
AT_SETUP([rpm -U and verify status])
|
|
|
2ff057 |
AT_KEYWORDS([install rpmdb query])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
rm -rf "${TOPDIR}"
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpmbuild --quiet -bb \
|
|
|
2ff057 |
--define "pkg status" \
|
|
|
2ff057 |
--define "filedata same_stuff" \
|
|
|
2ff057 |
/data/SPECS/conflicttest.spec
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -U /build/RPMS/noarch/conflictstatus-1.0-1.noarch.rpm
|
|
|
2ff057 |
runroot rpm -qls conflictstatus
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[normal /usr/share/my.version
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Install and verify status
|
|
|
2ff057 |
AT_SETUP([rpm -U with _install_lang and verify status])
|
|
|
2ff057 |
AT_KEYWORDS([install rpmdb query])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
rm -rf "${TOPDIR}"
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpmbuild --quiet -bb \
|
|
|
2ff057 |
/data/SPECS/flangtest.spec
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpm -U --define "_install_langs de:fi" /build/RPMS/noarch/flangtest-1.0-1.noarch.rpm
|
|
|
2ff057 |
runroot rpm -qls flangtest
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[normal /usr/share/flangtest/de.txt
|
|
|
2ff057 |
normal /usr/share/flangtest/empty.txt
|
|
|
2ff057 |
not installed /usr/share/flangtest/en.txt
|
|
|
2ff057 |
normal /usr/share/flangtest/fi.txt
|
|
|
2ff057 |
normal /usr/share/flangtest/none.txt
|
|
|
2ff057 |
not installed /usr/share/flangtest/pl.txt
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Install and verify files exist on disk
|
|
|
2ff057 |
AT_SETUP([rpm -U and verify files on disk])
|
|
|
2ff057 |
AT_KEYWORDS([install rpmdb])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
rm -rf "${TOPDIR}"
|
|
|
2ff057 |
rm -rf "${RPMTEST}"/opt/*
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpmbuild --quiet -bb /data/SPECS/selfconflict.spec
|
|
|
2ff057 |
runroot rpm -U /build/RPMS/noarch/selfconflict-1.0-1.noarch.rpm
|
|
|
2ff057 |
find "${RPMTEST}"/opt | wc -l
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[6
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|
|
|
2ff057 |
|
|
|
2ff057 |
# ------------------------------
|
|
|
2ff057 |
# Install, erase and oerify files removed from disk
|
|
|
2ff057 |
# Note /opt is not owned by the pkg so it gets left behind
|
|
|
2ff057 |
AT_SETUP([rpm -e and verify files removed])
|
|
|
2ff057 |
AT_KEYWORDS([install rpmdb])
|
|
|
2ff057 |
AT_CHECK([
|
|
|
2ff057 |
RPMDB_CLEAR
|
|
|
2ff057 |
RPMDB_INIT
|
|
|
2ff057 |
rm -rf "${TOPDIR}"
|
|
|
2ff057 |
rm -rf "${RPMTEST}"/opt/*
|
|
|
2ff057 |
|
|
|
2ff057 |
runroot rpmbuild --quiet -bb /data/SPECS/selfconflict.spec
|
|
|
2ff057 |
runroot rpm -U /build/RPMS/noarch/selfconflict-1.0-1.noarch.rpm
|
|
|
2ff057 |
runroot rpm -e selfconflict
|
|
|
2ff057 |
find "${RPMTEST}"/opt | wc -l
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[0],
|
|
|
2ff057 |
[1
|
|
|
2ff057 |
],
|
|
|
2ff057 |
[])
|
|
|
2ff057 |
AT_CLEANUP
|