Backport upstream fix for unit test

Resolves: RHEL-32133
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
Tomáš Hozza 2024-07-29 13:59:42 +02:00
parent 734f364e56
commit 2c96df2d45
No known key found for this signature in database
GPG Key ID: C5887AD51D9F3C2D
2 changed files with 118 additions and 1 deletions

112
PR1825.patch Normal file
View File

@ -0,0 +1,112 @@
From 1f628f20d75472e2e629c637dec0dec1d82769eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozza?= <thozza@redhat.com>
Date: Mon, 29 Jul 2024 10:17:02 +0200
Subject: [PATCH 1/2] Test/dnf4.mark: make the test compatible with all dnf
versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Let's revert to using plain 'dnf', add an explicit newline in the query
format and skip empty lines when processing the output. This makes the
test case compatible with all DNF versions, even with dnf5 once this
issue gets fixed.
The previous approach didn't work on c9s / el9, because there is no
'/usr/bin/dnf4 -> dnf-3' symlink.
Also see:
https://github.com/osbuild/osbuild/actions/runs/10136827918/job/28026181824
Co-authored-by: Michael Vogt <michael.vogt@gmail.com>
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
---
test/run/test_stages.py | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/test/run/test_stages.py b/test/run/test_stages.py
index ca224f07..476be949 100644
--- a/test/run/test_stages.py
+++ b/test/run/test_stages.py
@@ -537,15 +537,12 @@ class TestStages(test.TestBase):
assert os.path.isdir(tree)
# we're going to verify that packages in the tree are marked according to
- # Explicitly use 'dnf4' for now, because 'dnf5' contains a breaking change
- # in the repoquery --qf output, specifically it does not add a trailing newline.
- # We can use plan 'dnf' again once https://github.com/rpm-software-management/dnf5/issues/709 is fixed.
r = subprocess.run(
[
- "dnf4",
+ "dnf",
"--installroot", tree,
"repoquery", "--installed",
- "--qf", "%{name},%{reason}"
+ "--qf", "%{name},%{reason}\n"
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
@@ -554,6 +551,12 @@ class TestStages(test.TestBase):
)
for line in r.stdout.splitlines():
+ # 'dnf5' contains a breaking change in the repoquery --qf output, specifically it does not add
+ # a trailing newline. For this reason, we add it explicitly in the query format above. This however
+ # means that there are empty lines in the output, if 'dnf' points to 'dnf4'.
+ # Upstream bug https://github.com/rpm-software-management/dnf5/issues/709
+ if not line:
+ continue
package, mark = line.strip().split(",")
if package == "dnf":
--
2.45.2
From 4c4a23e5f628e9553328bc8342212e3272c7ab3f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozza?= <thozza@redhat.com>
Date: Mon, 29 Jul 2024 10:19:13 +0200
Subject: [PATCH 2/2] Test/dnf4.mark: make failures to parse dnf output easier
to debug
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The test case still fails on RHEL-10.0 Beta, even when not using dnf5,
with:
```
for line in r.stdout.splitlines():
> package, mark = line.strip().split(",")
E ValueError: not enough values to unpack (expected 2, got 1)
```
Make debugging of failures like this easier by printing the line when
the issue happens.
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
---
test/run/test_stages.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/test/run/test_stages.py b/test/run/test_stages.py
index 476be949..dc91bf8f 100644
--- a/test/run/test_stages.py
+++ b/test/run/test_stages.py
@@ -557,7 +557,12 @@ class TestStages(test.TestBase):
# Upstream bug https://github.com/rpm-software-management/dnf5/issues/709
if not line:
continue
- package, mark = line.strip().split(",")
+
+ try:
+ package, mark = line.strip().split(",")
+ except ValueError:
+ print(f"Failed to parse line: {line}")
+ raise
if package == "dnf":
assert mark == "user"
--
2.45.2

View File

@ -9,7 +9,7 @@ Version: 123
%global pkgdir %{_prefix}/lib/%{pypi_name}
Name: %{pypi_name}
Release: 1%{?dist}
Release: 2%{?dist}
License: Apache-2.0
URL: %{forgeurl}
@ -20,6 +20,8 @@ Summary: A build system for OS images
# https://github.com/osbuild/osbuild/pull/1824
Patch0: PR1824.patch
# https://github.com/osbuild/osbuild/pull/1825
Patch1: PR1825.patch
BuildRequires: make
BuildRequires: python3-devel
@ -289,6 +291,9 @@ fi
%{_libexecdir}/osbuild-depsolve-dnf
%changelog
* Mon Jul 29 2024 Tomáš Hozza <thozza@redhat.com>
- Backport upstream fix for unit test
* Thu Jul 25 2024 imagebuilder-bot <imagebuilder-bots+imagebuilder-bot@redhat.com> - 123-1
- New upstream release