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