rpm/tests/rpmquery.at

386 lines
7.5 KiB
Plaintext

# rpmquery.at: test rpmquery
#
# 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 queries])
# ------------------------------
AT_SETUP([rpm --qf -p *.i386.rpm])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
-q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
-p "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[hello-1.0-1.i386
],
[ignore])
AT_CLEANUP
# ------------------------------
AT_SETUP([rpm --qf -p *.src.rpm])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
-q --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \
-p "${abs_srcdir}"/data/SRPMS/hello-1.0-1.src.rpm
],
[0],
[hello-1.0-1.i386
],
[ignore])
AT_CLEANUP
# ------------------------------
AT_SETUP([rpm -ql -p *.src.rpm])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
-ql \
-p "${abs_srcdir}"/data/SRPMS/hello-1.0-1.src.rpm
],
[0],
[hello-1.0.tar.gz
hello.spec
],
[ignore])
AT_CLEANUP
# ------------------------------
AT_SETUP([rpm -q --specfile])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
-q --specfile --qf "%{name}" "${abs_srcdir}"/data/SPECS/hello.spec
],
[0],
[hello],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([rpm -ql -p *.i386.rpm])
AT_KEYWORDS([query])
AT_CHECK([
rpm \
-ql \
-p "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[/usr/local/bin/hello
/usr/share/doc/hello-1.0
/usr/share/doc/hello-1.0/FAQ
],
[ignore])
AT_CLEANUP
# ------------------------------
# Test query on manifest
AT_SETUP([rpm -qp <manifest>])
AT_KEYWORDS([query])
AT_CHECK([
cat << EOF > query.mft
"${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
"${abs_srcdir}"/data/RPMS/hello-1.0-1.ppc64.rpm
"${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
EOF
run rpm -qp --qf "%{nvr}\n" query.mft
],
[0],
[hello-1.0-1
hello-1.0-1
foo-1.0-1
],
[])
AT_CLEANUP
# ------------------------------
# Try to check "scripts"
# * Gets rpmpopt-$(VERSION) involved
AT_SETUP([rpm -q --scripts -p *.i386.rpm])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
-q --scripts \
-p "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[preinstall program: /bin/sh
postinstall program: /bin/sh
preuninstall program: /bin/sh
postuninstall program: /bin/sh
],
[ignore])
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 -qil hello])
AT_KEYWORDS([rpmdb install query])
AT_CHECK([
RPMDB_CLEAR
RPMDB_INIT
tpkg="hello-1.0-1.ppc64.rpm"
cp "${RPMDATA}/RPMS/$tpkg" "${RPMTEST}"
runroot rpm \
--noscripts --nodeps --ignorearch --relocate=/usr="${abs_builddir}"/testing/check \
-i "${tpkg}"
],
[0])
AT_CHECK([
runroot rpm \
-q hello
],
[0],
[hello-1.0-1.ppc64
],
[ignore])
cat > expout << _ATEOF
${abs_builddir}/testing/check/local/bin/hello
${abs_builddir}/testing/check/share/doc/hello-1.0
${abs_builddir}/testing/check/share/doc/hello-1.0/FAQ
_ATEOF
AT_CHECK([
runroot rpm \
-ql hello
],
[0],
[expout],
[ignore])
AT_CLEANUP
# ------------------------------
AT_SETUP([integer array query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%{filemodes}\n]]" \
-qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[33257
16877
33188
],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([formatted filesbypkg query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%-10{=NAME} %{FILENAMES}\n]]" \
-qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[hello /usr/local/bin/hello
hello /usr/share/doc/hello-1.0
hello /usr/share/doc/hello-1.0/FAQ
],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([hex formatted integer array extension query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%5{longfilesizes:hex}\n]]" \
-qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[ b40
1000
24
],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([base64 extension query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%{pkgid:base64}" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[qt8W635v5FKy1pILrW+0uw==
],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([integer array perms format query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%{filemodes:perms}\n]]" \
-qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[-rwxr-x--x
drwxr-xr-x
-rw-r--r--
],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([string array query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%{basenames} ]]" \
-qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[hello hello-1.0 FAQ ],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([empty string array query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%{basenames}]]" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([empty string array extension array format])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%{filenames}]]" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([empty string array extension query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%{filenames}" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[(none)],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([different sizes arrays query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="[[%{basenames} %{changelogname}]]" \
-qp "${abs_srcdir}"/data/RPMS/hello-1.0-1.i386.rpm
],
[0],
[],
[error: incorrect format: array iterator used with different sized arrays
])
AT_CLEANUP
# ------------------------------
AT_SETUP([non-existent string tag])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%{vendor}" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[(none)],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([non-existent integer tag query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%{installcolor}" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[(none)],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([conditional queryformat])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%|name?{%{name}}:{no}| %|installtime?{%{installtime}}:{(not installed)}|" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[foo (not installed)],
[])
AT_CLEANUP
# ------------------------------
AT_SETUP([invalid tag query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%{notag}" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[],
[error: incorrect format: unknown tag
])
AT_CLEANUP
# ------------------------------
AT_SETUP([invalid data for format query])
AT_KEYWORDS([query])
AT_CHECK([
run rpm \
--queryformat="%{name:depflags}" \
-qp "${abs_srcdir}"/data/RPMS/foo-1.0-1.noarch.rpm
],
[0],
[(not a number)],
[])
AT_CLEANUP