From 28c8b4e9dee32655daa050cef2e471bf4eb42855 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Tue, 26 May 2026 10:28:21 +0200 Subject: [PATCH 1/8] Add various rpm builds Signed-off-by: Cristian Le --- tests/prepare/artifact/install-cases.sh | 19 ++++++++++++++ tests/prepare/artifact/main.fmf | 6 +++++ tests/prepare/artifact/rpms/foo-1.0/foo.spec | 20 ++++++++++++++ .../artifact/rpms/foo-1.1-bad/foo.spec | 23 ++++++++++++++++ tests/prepare/artifact/rpms/foo-1.1/foo.spec | 20 ++++++++++++++ .../artifact/rpms/foo-1.2-bad/foo.spec | 23 ++++++++++++++++ tests/prepare/artifact/rpms/foo-1.2/foo.spec | 20 ++++++++++++++ .../artifact/rpms/foo-1.4-bad/foo.spec | 23 ++++++++++++++++ tests/prepare/artifact/rpms/foo-1.4/foo.spec | 20 ++++++++++++++ .../artifact/rpms/foo-2.2-bad/foo.spec | 23 ++++++++++++++++ tests/prepare/artifact/rpms/foo-2.2/foo.spec | 20 ++++++++++++++ .../artifact/rpms/foo-2.4-bad/foo.spec | 23 ++++++++++++++++ tests/prepare/artifact/rpms/foo-2.4/foo.spec | 20 ++++++++++++++ .../artifact/rpms/foo-ng-1.4-bad/foo.spec | 26 +++++++++++++++++++ .../prepare/artifact/rpms/foo-ng-1.4/foo.spec | 23 ++++++++++++++++ .../artifact/rpms/foo-ng-2.2-bad/foo.spec | 26 +++++++++++++++++++ .../prepare/artifact/rpms/foo-ng-2.2/foo.spec | 23 ++++++++++++++++ .../artifact/rpms/foo-ng-2.4-bad/foo.spec | 26 +++++++++++++++++++ .../prepare/artifact/rpms/foo-ng-2.4/foo.spec | 23 ++++++++++++++++ 19 files changed, 407 insertions(+) create mode 100755 tests/prepare/artifact/install-cases.sh create mode 100644 tests/prepare/artifact/rpms/foo-1.0/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-1.1-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-1.1/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-1.2-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-1.2/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-1.4-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-1.4/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-2.2-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-2.2/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-2.4-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-2.4/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-ng-1.4-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-ng-1.4/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-ng-2.2-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-ng-2.2/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-ng-2.4-bad/foo.spec create mode 100644 tests/prepare/artifact/rpms/foo-ng-2.4/foo.spec diff --git a/tests/prepare/artifact/install-cases.sh b/tests/prepare/artifact/install-cases.sh new file mode 100755 index 0000000000..965795603d --- /dev/null +++ b/tests/prepare/artifact/install-cases.sh @@ -0,0 +1,19 @@ +#!/bin/bash +. /usr/share/beakerlib/beakerlib.sh || exit 1 +. ../../../images.sh || exit 1 +. ../lib/common.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup "Prepare test environment" + rlRun "pushd install-cases" 0 "Enter test directory" + rlRun "run=$(mktemp -d)" 0 "Create run directory" + + setup_distro_environment + build_rpms + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -rf $run" 0 "Remove temporary files directories" + rlPhaseEnd +rlJournalEnd diff --git a/tests/prepare/artifact/main.fmf b/tests/prepare/artifact/main.fmf index 97540115a7..3d31c2403a 100644 --- a/tests/prepare/artifact/main.fmf +++ b/tests/prepare/artifact/main.fmf @@ -18,3 +18,9 @@ order: 60 Test that the verify-installation phase is injected when verify=true (default) and suppressed when verify=false. test: ./verify-installation.sh + +/install-cases: + summary: Test installation scenarios + description: | + See the plans in `install-cases` for more details. + test: ./install-cases.sh diff --git a/tests/prepare/artifact/rpms/foo-1.0/foo.spec b/tests/prepare/artifact/rpms/foo-1.0/foo.spec new file mode 100644 index 0000000000..022d7209c4 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.0/foo.spec @@ -0,0 +1,20 @@ +Name: foo +Version: 1.0 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +%description +Pre-installed version, lower than current system package (foo-1.4) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-1.1-bad/foo.spec b/tests/prepare/artifact/rpms/foo-1.1-bad/foo.spec new file mode 100644 index 0000000000..2d1162f576 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.1-bad/foo.spec @@ -0,0 +1,23 @@ +Name: foo +Version: 1.1 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Older version in verified artifacts (Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-1.1/foo.spec b/tests/prepare/artifact/rpms/foo-1.1/foo.spec new file mode 100644 index 0000000000..ea052951de --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.1/foo.spec @@ -0,0 +1,20 @@ +Name: foo +Version: 1.1 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +%description +Older version in verified artifacts + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-1.2-bad/foo.spec b/tests/prepare/artifact/rpms/foo-1.2-bad/foo.spec new file mode 100644 index 0000000000..ca23a49eeb --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.2-bad/foo.spec @@ -0,0 +1,23 @@ +Name: foo +Version: 1.2 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Older version (not verified, Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-1.2/foo.spec b/tests/prepare/artifact/rpms/foo-1.2/foo.spec new file mode 100644 index 0000000000..0285029528 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.2/foo.spec @@ -0,0 +1,20 @@ +Name: foo +Version: 1.2 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +%description +Older version (not verified) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-1.4-bad/foo.spec b/tests/prepare/artifact/rpms/foo-1.4-bad/foo.spec new file mode 100644 index 0000000000..40570fd6e2 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.4-bad/foo.spec @@ -0,0 +1,23 @@ +Name: foo +Version: 1.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +System package version (baseline, Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-1.4/foo.spec b/tests/prepare/artifact/rpms/foo-1.4/foo.spec new file mode 100644 index 0000000000..788f2f7bae --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-1.4/foo.spec @@ -0,0 +1,20 @@ +Name: foo +Version: 1.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +%description +System package version (baseline) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-2.2-bad/foo.spec b/tests/prepare/artifact/rpms/foo-2.2-bad/foo.spec new file mode 100644 index 0000000000..9269f5c3c9 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-2.2-bad/foo.spec @@ -0,0 +1,23 @@ +Name: foo +Version: 2.2 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Newer version (not verified, Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-2.2/foo.spec b/tests/prepare/artifact/rpms/foo-2.2/foo.spec new file mode 100644 index 0000000000..3c036d5571 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-2.2/foo.spec @@ -0,0 +1,20 @@ +Name: foo +Version: 2.2 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +%description +Newer version (not verified) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-2.4-bad/foo.spec b/tests/prepare/artifact/rpms/foo-2.4-bad/foo.spec new file mode 100644 index 0000000000..8e72bf3015 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-2.4-bad/foo.spec @@ -0,0 +1,23 @@ +Name: foo +Version: 2.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Newer version in verified artifacts (Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-2.4/foo.spec b/tests/prepare/artifact/rpms/foo-2.4/foo.spec new file mode 100644 index 0000000000..876d9bd5d3 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-2.4/foo.spec @@ -0,0 +1,20 @@ +Name: foo +Version: 2.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +%description +Newer version in verified artifacts + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-ng-1.4-bad/foo.spec b/tests/prepare/artifact/rpms/foo-ng-1.4-bad/foo.spec new file mode 100644 index 0000000000..431ec33eae --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-ng-1.4-bad/foo.spec @@ -0,0 +1,26 @@ +Name: foo-ng +Version: 1.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +Provides: foo +Obsoletes: foo < 3.0-1 + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Replacing system package (Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-ng-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-ng-1.4/foo.spec b/tests/prepare/artifact/rpms/foo-ng-1.4/foo.spec new file mode 100644 index 0000000000..5877165854 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-ng-1.4/foo.spec @@ -0,0 +1,23 @@ +Name: foo-ng +Version: 1.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +Provides: foo +Obsoletes: foo < 3.0-1 + +%description +Replacing system package + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-ng-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-ng-2.2-bad/foo.spec b/tests/prepare/artifact/rpms/foo-ng-2.2-bad/foo.spec new file mode 100644 index 0000000000..1867e9d86a --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-ng-2.2-bad/foo.spec @@ -0,0 +1,26 @@ +Name: foo-ng +Version: 2.2 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +Provides: foo +Obsoletes: foo < 3.0-1 + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Replacing package (not verified, Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-ng-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-ng-2.2/foo.spec b/tests/prepare/artifact/rpms/foo-ng-2.2/foo.spec new file mode 100644 index 0000000000..db3187e1ca --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-ng-2.2/foo.spec @@ -0,0 +1,23 @@ +Name: foo-ng +Version: 2.2 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +Provides: foo +Obsoletes: foo < 3.0-1 + +%description +Replacing package (not verified) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-ng-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-ng-2.4-bad/foo.spec b/tests/prepare/artifact/rpms/foo-ng-2.4-bad/foo.spec new file mode 100644 index 0000000000..632ae43e79 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-ng-2.4-bad/foo.spec @@ -0,0 +1,26 @@ +Name: foo-ng +Version: 2.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +Provides: foo +Obsoletes: foo < 3.0-1 + +# Arbitrary broken dependency at install time +Requires: some-non-existent-package + +%description +Replacing package in verified artifacts (Broken) + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-ng-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel diff --git a/tests/prepare/artifact/rpms/foo-ng-2.4/foo.spec b/tests/prepare/artifact/rpms/foo-ng-2.4/foo.spec new file mode 100644 index 0000000000..577824b1e6 --- /dev/null +++ b/tests/prepare/artifact/rpms/foo-ng-2.4/foo.spec @@ -0,0 +1,23 @@ +Name: foo-ng +Version: 2.4 +Release: 1 +BuildArch: noarch +Summary: Main test package +License: none + +Provides: foo +Obsoletes: foo < 3.0-1 + +%description +Replacing package in verified artifacts + +%files + +%package devel +Summary: Main test sub-package +Requires: foo-ng-%{version} == %{version}-%{release} + +%description devel +Version locked sub-package + +%files devel From 131c76e98842441903be40c16e65aabb37a7ab0f Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Wed, 27 May 2026 15:05:45 +0200 Subject: [PATCH 2/8] Add basic test framework Signed-off-by: Cristian Le --- tests/prepare/artifact/install-cases.sh | 47 ++++++++++++++-- .../artifact/install-cases/.fmf/version | 1 + tests/prepare/artifact/install-cases/main.fmf | 56 +++++++++++++++++++ tests/prepare/artifact/install-cases/test.fmf | 17 ++++++ 4 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 tests/prepare/artifact/install-cases/.fmf/version create mode 100644 tests/prepare/artifact/install-cases/main.fmf create mode 100644 tests/prepare/artifact/install-cases/test.fmf diff --git a/tests/prepare/artifact/install-cases.sh b/tests/prepare/artifact/install-cases.sh index 965795603d..f02fcc2e55 100755 --- a/tests/prepare/artifact/install-cases.sh +++ b/tests/prepare/artifact/install-cases.sh @@ -1,19 +1,56 @@ #!/bin/bash . /usr/share/beakerlib/beakerlib.sh || exit 1 -. ../../../images.sh || exit 1 -. ../lib/common.sh || exit 1 +. ../../images.sh || exit 1 +. ./lib/common.sh || exit 1 rlJournalStart rlPhaseStartSetup "Prepare test environment" - rlRun "pushd install-cases" 0 "Enter test directory" + rlRun "testdir=$(mktemp -d)" 0 "Create test directory" + + build_rpms + + rlRun "cp -a install-cases $testdir/data" 0 "Copy test data" + rlRun "cp -a rpms $testdir/data/" 0 "Copy rpms data" + rlRun "pushd $testdir/data" 0 "Enter test directory" rlRun "run=$(mktemp -d)" 0 "Create run directory" setup_distro_environment - build_rpms rlPhaseEnd +xfail_plans=( + +) + + while IFS= read -r image; do + if ! is_fedora "$image" && ! is_centos "$image"; then + # Can only test rpm artifacts right now + continue + fi + + phase_prefix="$(test_phase_prefix $image)" + + for plan in $(tmt plans ls); do + xfail="" + expected_result=0 + for check_pattern in ${xfail_plans[@]}; do + if [[ "$plan" =~ $check_pattern ]]; then + xfail="(XFAIL)" + expected_result=2 + break + fi + done + rlPhaseStartTest "$phase_prefix $plan $xfail" + rlRun "tmt run -i $run --scratch -vvv --all \ + plan --name $plan \ + provision -h $PROVISION_HOW --image $image" \ + $expected_result "Run test case $plan $xfail" + rlPhaseEnd + done + done <<< "$IMAGES" + + rlPhaseStartCleanup rlRun "popd" - rlRun "rm -rf $run" 0 "Remove temporary files directories" + rlRun "rm -rf $run $testdir" 0 "Remove temporary files directories" rlPhaseEnd rlJournalEnd diff --git a/tests/prepare/artifact/install-cases/.fmf/version b/tests/prepare/artifact/install-cases/.fmf/version new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/tests/prepare/artifact/install-cases/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/tests/prepare/artifact/install-cases/main.fmf b/tests/prepare/artifact/install-cases/main.fmf new file mode 100644 index 0000000000..89ab62c299 --- /dev/null +++ b/tests/prepare/artifact/install-cases/main.fmf @@ -0,0 +1,56 @@ +discover: + - how: fmf + test: + - /test +prepare: + - name: Setup system + order: 20 + how: shell + script: | + # Prepare the system repo + mkdir system_repo + for pkg in $SYSTEM_PACKAGE; do + cp rpms/$pkg/*.rpm system_repo/ + done + + # Running dnf/createrepo commands manually to bypass prepare/install handling + $DNF_CMD install -y createrepo + createrepo system_repo + cat > /etc/yum.repos.d/system-test-repo.repo < Date: Fri, 29 May 2026 15:36:39 +0200 Subject: [PATCH 3/8] Postpone testing on centos Signed-off-by: Cristian Le --- tests/prepare/artifact/install-cases.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/prepare/artifact/install-cases.sh b/tests/prepare/artifact/install-cases.sh index f02fcc2e55..2cc3260de7 100755 --- a/tests/prepare/artifact/install-cases.sh +++ b/tests/prepare/artifact/install-cases.sh @@ -27,6 +27,24 @@ xfail_plans=( continue fi + extra_env="" + if is_centos_7 "$image"; then + extra_env="-e DNF_CMD=yum" + # TODO: centos7 is hard + continue + fi + + if is_centos_stream_9 "$image" || is_centos_stream_10 "$image"; then + # TODO(#4941): + # dnf repoquery fails + # - Error: 'Package' object has no attribute 'full_nevra' + # - Or gives an output of + # 'bar': + # - nevra: '%{full_nevra}' + # repo_id: 'tmt-artifact-shared' + continue + fi + phase_prefix="$(test_phase_prefix $image)" for plan in $(tmt plans ls); do @@ -40,7 +58,7 @@ xfail_plans=( fi done rlPhaseStartTest "$phase_prefix $plan $xfail" - rlRun "tmt run -i $run --scratch -vvv --all \ + rlRun "tmt run $extra_env -i $run --scratch -vvv --all \ plan --name $plan \ provision -h $PROVISION_HOW --image $image" \ $expected_result "Run test case $plan $xfail" From 27d34ebf0adaecce0ca9110c0b80c48664f68cf6 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Wed, 27 May 2026 15:26:34 +0200 Subject: [PATCH 4/8] Add baseline test Signed-off-by: Cristian Le --- tests/prepare/artifact/install-cases/baseline/main.fmf | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tests/prepare/artifact/install-cases/baseline/main.fmf diff --git a/tests/prepare/artifact/install-cases/baseline/main.fmf b/tests/prepare/artifact/install-cases/baseline/main.fmf new file mode 100644 index 0000000000..c56666310f --- /dev/null +++ b/tests/prepare/artifact/install-cases/baseline/main.fmf @@ -0,0 +1,10 @@ +summary: Baseline case +description: | + System repo: foo-1.4 (baseline) + Pre-installed: None + Artifacts: None + + Normal installation case with no artifacts or anything special + +environment+: + EXPECTED_PACKAGE: foo-1.4 From 27cc324530fd4eee2b5d8503f493951d8a6e9a94 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Wed, 27 May 2026 15:33:49 +0200 Subject: [PATCH 5/8] Add upgrade test Signed-off-by: Cristian Le --- .../install-cases/no-artifacts/upgrade.fmf | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/prepare/artifact/install-cases/no-artifacts/upgrade.fmf diff --git a/tests/prepare/artifact/install-cases/no-artifacts/upgrade.fmf b/tests/prepare/artifact/install-cases/no-artifacts/upgrade.fmf new file mode 100644 index 0000000000..f776afd47d --- /dev/null +++ b/tests/prepare/artifact/install-cases/no-artifacts/upgrade.fmf @@ -0,0 +1,23 @@ +summary: Newer version on system +description: | + System repo: foo-1.4 (baseline) + Pre-installed: foo-1.0 + Artifacts: None + + `foo` is pre-installed but we do not really want to upgrade it. + +environment+: + EXPECTED_PACKAGE: foo-1.0 + PRE_INSTALLED_PACKAGE: rpms/foo-1.0/foo-1.0*.rpm + +/only-foo: + summary+: " (only foo requested)" + +/with-bar: + summary+: " (foo and bar requested)" + description+: | + Installing another dependency (`bar`) should not upgrade `foo`. + context+: + with_bar: "true" + environment+: + SYSTEM_PACKAGE+: " bar" From 256998d7d91cc6f951d1fdfaa2d9bbca34052139 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Wed, 27 May 2026 17:07:32 +0200 Subject: [PATCH 6/8] Add basic artifact test Signed-off-by: Cristian Le --- .../verified-artifacts/basic.fmf | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 tests/prepare/artifact/install-cases/verified-artifacts/basic.fmf diff --git a/tests/prepare/artifact/install-cases/verified-artifacts/basic.fmf b/tests/prepare/artifact/install-cases/verified-artifacts/basic.fmf new file mode 100644 index 0000000000..497cee82f1 --- /dev/null +++ b/tests/prepare/artifact/install-cases/verified-artifacts/basic.fmf @@ -0,0 +1,21 @@ +summary: Basic case +description: | + System repo: foo-1.4 (baseline) + Pre-installed: None + Artifacts: foo-2.4 or foo-1.1 + + Normal installation case with an artifact + +/upgrade: + summary: " (upgrading)" + context+: + verified_artifact: foo-2.4 + environment+: + EXPECTED_PACKAGE: foo-2.4 + +/downgrade: + summary: " (downgrading)" + context+: + verified_artifact: foo-1.1 + environment+: + EXPECTED_PACKAGE: foo-1.1 From 3eb5b9db96608c429ac3f161c1459af8f51471f2 Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Wed, 27 May 2026 18:21:48 +0200 Subject: [PATCH 7/8] Add failing test with pre-installed artifacts Signed-off-by: Cristian Le --- tests/prepare/artifact/install-cases.sh | 2 +- .../verified-artifacts/pre-installed.fmf | 28 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 tests/prepare/artifact/install-cases/verified-artifacts/pre-installed.fmf diff --git a/tests/prepare/artifact/install-cases.sh b/tests/prepare/artifact/install-cases.sh index 2cc3260de7..fe938e4607 100755 --- a/tests/prepare/artifact/install-cases.sh +++ b/tests/prepare/artifact/install-cases.sh @@ -18,7 +18,7 @@ rlJournalStart rlPhaseEnd xfail_plans=( - + "/verified-artifacts/pre-installed" ) while IFS= read -r image; do diff --git a/tests/prepare/artifact/install-cases/verified-artifacts/pre-installed.fmf b/tests/prepare/artifact/install-cases/verified-artifacts/pre-installed.fmf new file mode 100644 index 0000000000..fb1cbb29fa --- /dev/null +++ b/tests/prepare/artifact/install-cases/verified-artifacts/pre-installed.fmf @@ -0,0 +1,28 @@ +summary: Pre-installed package present +description: | + System repo: foo-1.4 (baseline) + Pre-installed: foo-1.4 + Artifacts: foo-2.4 or foo-1.1 + + Pre-installed package should be ignored in this case + +environment+: + PRE_INSTALLED_PACKAGE: rpms/foo-1.4/foo-1.4*.rpm +context+: + # Because presence check gets in the way. + # It should fail at verify phase and test execution. + xfail: "true" + +/upgrade: + summary: " (upgrading)" + context+: + verified_artifact: foo-2.4 + environment+: + EXPECTED_PACKAGE: foo-2.4 + +/downgrade: + summary: " (downgrading)" + context+: + verified_artifact: foo-1.1 + environment+: + EXPECTED_PACKAGE: foo-1.1 From 950d0f101598143cf18c36555a58651773341edc Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Thu, 28 May 2026 17:08:50 +0200 Subject: [PATCH 8/8] Add test cases for the non-verified artifacts Signed-off-by: Cristian Le --- .../available-artifacts/basic.fmf | 23 ++++++++++++++++++ .../available-artifacts/pre-installed.fmf | 24 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 tests/prepare/artifact/install-cases/available-artifacts/basic.fmf create mode 100644 tests/prepare/artifact/install-cases/available-artifacts/pre-installed.fmf diff --git a/tests/prepare/artifact/install-cases/available-artifacts/basic.fmf b/tests/prepare/artifact/install-cases/available-artifacts/basic.fmf new file mode 100644 index 0000000000..a1c1104782 --- /dev/null +++ b/tests/prepare/artifact/install-cases/available-artifacts/basic.fmf @@ -0,0 +1,23 @@ +summary: Basic case (non-verified) +description: | + System repo: foo-1.4 (baseline) + Pre-installed: None + Artifacts: foo-2.2 or foo-1.2 + + Normal installation case with an non-verified artifact available + +/upgrade: + summary: " (upgrading)" + context+: + available_artifact: foo-2.2 + environment+: + EXPECTED_PACKAGE: foo-2.2 + +/downgrade: + summary: " (downgrading)" + context+: + available_artifact: foo-1.2 + environment+: + # TODO: This downgraded because of the forced artifact priority + # change this when the repo priority is opt-in + EXPECTED_PACKAGE: foo-1.2 diff --git a/tests/prepare/artifact/install-cases/available-artifacts/pre-installed.fmf b/tests/prepare/artifact/install-cases/available-artifacts/pre-installed.fmf new file mode 100644 index 0000000000..5816396460 --- /dev/null +++ b/tests/prepare/artifact/install-cases/available-artifacts/pre-installed.fmf @@ -0,0 +1,24 @@ +summary: Pre-installed package present (non-verified) +description: | + System repo: foo-1.4 (baseline) + Pre-installed: foo-1.4 + Artifacts: foo-2.2 or foo-1.2 + + Pre-installed package should be respected in this case + +environment+: + PRE_INSTALLED_PACKAGE: rpms/foo-1.4/foo-1.4*.rpm + +/upgrade: + summary: " (upgrading)" + context+: + available_artifact: foo-2.2 + environment+: + EXPECTED_PACKAGE: foo-1.4 + +/downgrade: + summary: " (downgrading)" + context+: + available_artifact: foo-1.2 + environment+: + EXPECTED_PACKAGE: foo-1.4