Commit graph

8 commits

Author SHA1 Message Date
Achilleas Koutsou
562d30cf59 tools/test: shell out to python3 to check for libdnf5
We run tests using tox to set up environments for different python
versions to test against.  The problem is that when a test shells out to
a python script, like osbuild-depsolve-dnf5, it's not run inside the
environment but in the system environment.  The `has_dnf5()` check
returns False because it fails to import dnf5 in the tox environment,
even though the script can be run and the test will succeed.

Use `python3 -c "import libdnf5"` to decide if the script is runnable
instead of using `importlib`.  This doesn't solve the problem of our
tests running python scripts in a different environment than the one (we
think) we are testing, but it will enable tests of osbuild-depsolve-dnf5
for now.
2024-04-23 07:42:09 +02:00
Brian C. Lane
4c3dba0db9 test_depsolve: Test with empty exclude-specs
The go json serialize process takes a nil slice and converts that to a
'null' instead of an '[]' or leaving off the field. This means that the
json generated by python is not representative of what is output by
images/dnfjson and we have not been properly testing
osbuild-depsolve-dnf5

Testing dnf5 depsolving *also* requires that libdnf5 be present in the
environment, which is a separate problem that still needs to be fixed.
2024-04-23 07:42:09 +02:00
Michael Vogt
06e310b54f tools: extract common test_depsolve() with pytest parameters
Given that the tests `test_depsolve{,_dnf5}` are identical except
the `command` extract them into a common test that is just parameterized.

This will also help to avoid drift between the two resolvers.
2024-04-22 11:08:35 +02:00
Michael Vogt
f892351b00 tools: tweak depsolve() helper to show stderr from depsolve
So that we see any error output during the tests in "realtime". With
subprocess check=True and capture_output=True on exit_code != 0 no
stderr as part of the exception by default so this change helps
seeing issues from depsolve-dnf more easily.
2024-04-12 15:14:55 -07:00
Michael Vogt
ffeb0169ff tools: tweak repo_servers_fixture() to redirect stderr to /dev/null
The default python http.server is very chatty, we don't need this
during the tests.
2024-04-12 15:14:55 -07:00
Michael Vogt
0ef3459155 tools: extract make_dnf_scafolding() from config_combos()
Extract make_dnf_scafolding as a helper, mostly so that the config_combos()
function is easier to read. It seems one core concept here is the iteration
of "combo[0]" and "combo[1]" so having them symetrical at the same indent
level feel easier to read to me.
2024-04-11 18:17:42 +02:00
Michael Vogt
599d3a8730 tools: rename "nothing" to "pkg-with-no-deps" to make it a bit clearer
Tweak the package name a bit to more it very explicit what it's about.
2024-04-11 12:45:25 +02:00
Achilleas Koutsou
58993d8321 tools/test: add test for osbuild-depsolve-dnf
Depsolver test that starts a temporary file server and queries it using
osbuild-depsolve-dnf.

Generates all combinations of repositories configured through the
depsolve-dnf request or the repositories directory and runs the test
cases.  The results should be the same regardless of combination.

Test repos are defined with a fake gpg key on the request or repo config
and check if it is read correctly and attached to the repo configs in
the response.  The name of the repo is appended to each repo's gpg key
so we can make sure that repo option values don't get swapped.
2024-04-10 16:22:13 -07:00