diff options
author | Panu Matilainen <pmatilai@redhat.com> | 2022-10-11 10:24:57 +0300 |
---|---|---|
committer | Michal Domonkos <mdomonko@redhat.com> | 2023-03-13 15:32:25 +0100 |
commit | 448d68a67144f284c4fc2551ce3f5b34a99c84f1 (patch) | |
tree | abdad9bcd910ec313136a939352e5fc843e417c6 | |
parent | ef1e889d0d83410878aaaea88ae9b8910064b836 (diff) | |
download | rpm-448d68a67144f284c4fc2551ce3f5b34a99c84f1.tar.gz |
Add a whole bunch of epoch behavior install tests
Backport notes:
Replace "~/.rpmmacros" with a non-tilde default path due to a bug in the
bundled glob(3) implementation which doesn't yield any matches for a "~"
pattern in a fakechroot environment where FAKECHROOT_BASE and HOME both
point at the same directory (thus preventing RPM from picking up the
%_query_all_fmt macro in the tests). This is not an issue on master
since it carries commit 66fa46c006bae0f28d93238b8f7f1c923645eee5 but
that's not appropriate for a stable branch.
(backported from commit 7788763e09b7beed75345e11c223735ad4829fdb)
-rw-r--r-- | tests/data/SPECS/versiontest.spec | 3 | ||||
-rw-r--r-- | tests/rpmi.at | 141 |
2 files changed, 143 insertions, 1 deletions
diff --git a/tests/data/SPECS/versiontest.spec b/tests/data/SPECS/versiontest.spec index 51fe235c6..c99640143 100644 --- a/tests/data/SPECS/versiontest.spec +++ b/tests/data/SPECS/versiontest.spec @@ -1,6 +1,9 @@ Name: versiontest Version: %{ver} Release: 1 +%if %{defined:epoch} +Epoch: %{epoch} +%endif Summary: Testing version behavior Group: Testing diff --git a/tests/rpmi.at b/tests/rpmi.at index d6b1b0be7..02694a445 100644 --- a/tests/rpmi.at +++ b/tests/rpmi.at @@ -651,7 +651,6 @@ runroot rpm -q versiontest [versiontest-1.0-1.noarch ], []) -# TODO: the same with epoch vs no epoch # Test freshen AT_CHECK([ @@ -714,6 +713,146 @@ runroot rpm -q versiontest AT_CLEANUP +AT_SETUP([rpm upgrade/downgrade epoch]) +RPMDB_INIT + +runroot rpmbuild --quiet -bb --define "ver 1.0" /data/SPECS/versiontest.spec +runroot_other cp /build/RPMS/noarch/versiontest-1.0-1.noarch.rpm /tmp/noepoch.rpm +for e in 1 2; do + runroot rpmbuild --quiet -bb --define "ver 1.0" --define "epoch ${e}" /data/SPECS/versiontest.spec + runroot_other cp /build/RPMS/noarch/versiontest-1.0-1.noarch.rpm /tmp/epoch${e}.rpm +done +# for testing sanity +runroot_other echo '%_query_all_fmt %%{nevra}' > \ + ${RPMTEST}/$(runroot rpm --eval '%_rpmmacrodir')/macros.epoch + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/noepoch.rpm +runroot rpm -U /tmp/epoch1.rpm +runroot rpm -q versiontest +], +[0], +[versiontest-1:1.0-1.noarch +], +[]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch1.rpm +runroot rpm -U /tmp/epoch2.rpm +runroot rpm -q versiontest +], +[0], +[versiontest-2:1.0-1.noarch +], +[]) + +# XXX this should be FAIL, but don't want to fail all the test just because... +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch1.rpm +runroot rpm -U /tmp/noepoch.rpm +], +[2], +[], +[ package versiontest-1:1.0-1.noarch (which is newer than versiontest-1.0-1.noarch) is already installed + package versiontest-1.0-1.noarch is already installed +]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch2.rpm +runroot rpm -U /tmp/epoch1.rpm +], +[2], +[], +[ package versiontest-2:1.0-1.noarch (which is newer than versiontest-1:1.0-1.noarch) is already installed +]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch2.rpm +runroot rpm -U --oldpackage /tmp/epoch1.rpm +runroot rpm -q versiontest +], +[0], +[versiontest-1:1.0-1.noarch +], +[]) + +# XXX this should be FAIL, but don't want to fail all the test just because... +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch1.rpm +runroot rpm -U --oldpackage /tmp/noepoch.rpm +runroot rpm -q versiontest +], +[0], +[versiontest-1:1.0-1.noarch +], +[ package versiontest-1.0-1.noarch is already installed +]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/noepoch.rpm +runroot rpm -e versiontest-1.0-1 +], +[0], +[], +[]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch1.rpm +runroot rpm -e versiontest-1.0-1 +], +[0], +[], +[]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -i /tmp/noepoch.rpm +runroot rpm -i /tmp/epoch1.rpm + +# gah, versions listed on stdout but error message on stderr +runroot rpm -e versiontest 1>&2 +runroot rpm -e versiontest-1.0-1 1>&2 +runroot rpm -e versiontest-1:1.0-1 1>&2 +runroot rpm -q versiontest +], +[0], +[versiontest-1.0-1.noarch +], +[error: "versiontest" specifies multiple packages: + versiontest-1.0-1.noarch + versiontest-1:1.0-1.noarch +error: "versiontest-1.0-1" specifies multiple packages: + versiontest-1.0-1.noarch + versiontest-1:1.0-1.noarch +]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/noepoch.rpm +runroot rpm -U --replacepkgs /tmp/noepoch.rpm +], +[0], +[], +[]) + +AT_CHECK([ +RPMDB_INIT +runroot rpm -U /tmp/epoch1.rpm +runroot rpm -U --replacepkgs /tmp/epoch1.rpm +], +[0], +[], +[]) +AT_CLEANUP + AT_SETUP([rpm -U obsoleted packages]) AT_KEYWORDS([install obsolete]) RPMDB_INIT |