summaryrefslogtreecommitdiff
path: root/tests/rpmdb.at
diff options
context:
space:
mode:
Diffstat (limited to 'tests/rpmdb.at')
-rw-r--r--tests/rpmdb.at220
1 files changed, 220 insertions, 0 deletions
diff --git a/tests/rpmdb.at b/tests/rpmdb.at
new file mode 100644
index 0000000..598d644
--- /dev/null
+++ b/tests/rpmdb.at
@@ -0,0 +1,220 @@
+# rpmdb.at: test rpmdb access
+#
+# 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 database access])
+
+# ------------------------------
+# Attempt to initialize a rpmdb
+AT_SETUP([rpm --initdb])
+AT_KEYWORDS([rpmdb])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+],
+[0],
+[ignore],
+[ignore])
+AT_CLEANUP
+
+# ------------------------------
+# Run rpm -qa on an empty rpmdb
+AT_SETUP([rpm -qa])
+AT_KEYWORDS([rpmdb query])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+runroot rpm \
+ -qa
+],
+[0])
+AT_CLEANUP
+
+
+# ------------------------------
+# install a noarch package into a local rpmdb without --relocate and --nodeps
+# * Should always succeed
+AT_SETUP([rpm -i *.noarch.rpm])
+AT_KEYWORDS([rpmdb install])
+
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+
+tpkg="foo-1.0-1.noarch.rpm"
+cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}"
+
+runroot rpm -i \
+ "${tpkg}"
+],
+[0])
+
+AT_CLEANUP
+
+# ------------------------------
+# reinstall a noarch package (with no files)
+AT_SETUP([rpm -U --replacepkgs])
+AT_KEYWORDS([rpmdb install])
+
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+
+tpkg="foo-1.0-1.noarch.rpm"
+cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}"
+
+runroot rpm -i "${tpkg}" && runroot rpm -U --replacepkgs "${tpkg}"
+],
+[0])
+
+AT_CLEANUP
+
+# ------------------------------
+# install a package into a local rpmdb
+# * Shall only work with relocation
+# * Use --ignorearch because we don't know the arch
+AT_SETUP([rpm -i --relocate=.. *.i386.rpm])
+AT_KEYWORDS([rpmdb install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+
+tpkg="hello-1.0-1.i386.rpm"
+cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}"
+
+runroot rpm -i \
+ --noscripts --nodeps --ignorearch --relocate=/usr="${abs_builddir}"/testing/check \
+ "${tpkg}"
+],
+[0])
+
+AT_CLEANUP
+
+
+# ------------------------------
+# install a package into a local rpmdb
+# * Shall only work with relocation
+# * Use --ignorearch because we don't know the arch
+AT_SETUP([rpm -i --relocate=.. *.ppc64.rpm])
+AT_KEYWORDS([rpmdb install])
+AT_CHECK([
+RPMDB_CLEAR
+RPMDB_INIT
+
+tpkg="hello-1.0-1.ppc64.rpm"
+cp "${RPMDATA}/RPMS/${tpkg}" "${RPMTEST}"
+
+runroot rpm -i \
+ --noscripts --nodeps --ignorearch --relocate=/usr="${abs_builddir}"/testing/check \
+ "${tpkg}"
+],
+[0],
+[ignore],
+[ignore])
+
+AT_CLEANUP
+
+# ------------------------------
+# Install and verify status
+AT_SETUP([rpm -U and verify status])
+AT_KEYWORDS([install rpmdb query])
+AT_CHECK([
+RPMDB_CLEAR
+rm -rf "${TOPDIR}"
+
+run rpmbuild --quiet -bb \
+ --define "pkg status" \
+ --define "filedata same_stuff" \
+ ${RPMDATA}/SPECS/conflicttest.spec
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflictstatus-1.0-1.noarch.rpm
+runroot rpm -qls conflictstatus
+],
+[0],
+[normal /usr/share/my.version
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Install and verify status
+AT_SETUP([rpm -U with _install_lang and verify status])
+AT_KEYWORDS([install rpmdb query])
+AT_CHECK([
+RPMDB_CLEAR
+rm -rf "${TOPDIR}"
+
+run rpmbuild --quiet -bb \
+ ${RPMDATA}/SPECS/flangtest.spec
+
+runroot rpm -U --define "_install_langs de:fi" "${TOPDIR}"/RPMS/noarch/flangtest-1.0-1.noarch.rpm
+runroot rpm -qls flangtest
+],
+[0],
+[normal /usr/share/flangtest/de.txt
+not installed /usr/share/flangtest/en.txt
+normal /usr/share/flangtest/fi.txt
+normal /usr/share/flangtest/none.txt
+not installed /usr/share/flangtest/pl.txt
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Install and verify files exist on disk
+AT_SETUP([rpm -U and verify files on disk])
+AT_KEYWORDS([install rpmdb])
+AT_CHECK([
+RPMDB_CLEAR
+rm -rf "${TOPDIR}"
+rm -f "${RPMTEST}"/usr/share/my.version
+
+run rpmbuild --quiet -bb \
+ --define "pkg status" \
+ --define "filedata same_stuff" \
+ ${RPMDATA}/SPECS/conflicttest.spec
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflictstatus-1.0-1.noarch.rpm
+test -f "${RPMTEST}"/usr/share/my.version
+],
+[0],
+[],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Install, erase and verify files removed from disk
+AT_SETUP([rpm -e and verify files removed])
+AT_KEYWORDS([install rpmdb])
+AT_CHECK([
+RPMDB_CLEAR
+rm -rf "${TOPDIR}"
+rm -f "${RPMTEST}"/usr/share/my.version
+
+run rpmbuild --quiet -bb \
+ --define "pkg status" \
+ --define "filedata same_stuff" \
+ ${RPMDATA}/SPECS/conflicttest.spec
+
+runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflictstatus-1.0-1.noarch.rpm
+runroot rpm -e conflictstatus
+test -f "${RPMTEST}"/usr/share/my.version
+],
+[1],
+[],
+[])
+AT_CLEANUP