diff --git a/Uranium-5.6.0-pytest8.patch b/Uranium-5.6.0-pytest8.patch new file mode 100644 index 0000000..b349282 --- /dev/null +++ b/Uranium-5.6.0-pytest8.patch @@ -0,0 +1,53 @@ +From dd2c31bc0f38d11c8351d89fae3d92cd12da885e Mon Sep 17 00:00:00 2001 +From: Remco Burema +Date: Wed, 21 Feb 2024 11:39:49 +0100 +Subject: [PATCH 1/3] Protobuf version mismatch caused tests,builds to fail. + +--- + 1 file changed, 1 insertion(+) + +diff --git a/tests/conftest.py b/tests/conftest.py +index 4fcd4cefd..4f500fabc 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -59,3 +59,17 @@ def upgrade_manager(application): + upgrade_manager = VersionUpgradeManager(application) + return upgrade_manager + ++def pytest_collection_modifyitems(items): ++ """ Modifies test items in place to ensure test classes run in a given order. ++ See: https://stackoverflow.com/questions/70738211/run-pytest-classes-in-custom-order/70758938#70758938 ++ """ ++ CLASS_ORDER = ["TestActiveToolProxy"] # All classes that need to be run in-order, in that order -- all others will run _before_. ++ class_mapping = {item: item.cls.__name__ for item in items} ++ ++ sorted_items = items.copy() ++ # Iteratively move tests of each class to the end of the test queue ++ for class_ in CLASS_ORDER: ++ sorted_items = [it for it in sorted_items if class_mapping[it] != class_] + [ ++ it for it in sorted_items if class_mapping[it] == class_ ++ ] ++ items[:] = sorted_items + +From cd4eb2cf8c450c23a3f2d42619ee36ec93d49a6d Mon Sep 17 00:00:00 2001 +From: Remco Burema +Date: Wed, 21 Feb 2024 16:22:24 +0100 +Subject: [PATCH 3/3] Not all our tests are classes. + +--- + tests/conftest.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/conftest.py b/tests/conftest.py +index 4f500fabc..d26f2545a 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -64,7 +64,7 @@ def pytest_collection_modifyitems(items): + See: https://stackoverflow.com/questions/70738211/run-pytest-classes-in-custom-order/70758938#70758938 + """ + CLASS_ORDER = ["TestActiveToolProxy"] # All classes that need to be run in-order, in that order -- all others will run _before_. +- class_mapping = {item: item.cls.__name__ for item in items} ++ class_mapping = {item: (item.cls.__name__ if item.cls else "") for item in items} + + sorted_items = items.copy() + # Iteratively move tests of each class to the end of the test queue diff --git a/python-uranium.spec b/python-uranium.spec index 6c990b6..8f5b9ea 100644 --- a/python-uranium.spec +++ b/python-uranium.spec @@ -8,6 +8,9 @@ Source: %{url}/archive/%{version}.tar.gz#/Uranium-%{version}.tar.gz Patch: Uranium-5.3.0-qt-try-ints-then-bytes-for-gl-mask-functions.patch # Fix asserts for called once in Python 3.12: Patch: https://github.com/Ultimaker/Uranium/pull/885.patch#/Uranium-5.3.0-python3.12.patch +# Force test order to fix FTBFS with pytest 8 +# From https://github.com/Ultimaker/Uranium/pull/941 +Patch: Uranium-5.6.0-pytest8.patch # Cmake bits taken from 4.13.1, before upstream went nuts with conan Source2: mod_bundled_packages_json.py