]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Move pytest requirements check to pytest_configure hook 12105/head
authorŠtěpán Balážik <stepan@isc.org>
Fri, 13 Feb 2026 10:53:16 +0000 (11:53 +0100)
committerŠtěpán Balážik <stepan@isc.org>
Tue, 2 Jun 2026 10:08:14 +0000 (10:08 +0000)
Logging from a pytest hook looks better.

Reorder the check for presence of `featuretest` before `init_vars` to
produce more sensible errors.

(cherry picked from commit b31f058ad0026ed183ac1fc9fb6fa089162301e3)

bin/tests/system/conftest.py

index 14ee0ed05405609c7c4a5027c51b3b44ad6a6024..e84ae195901fada58e21243c6b14974baefb6b8d 100644 (file)
@@ -34,13 +34,6 @@ import isctest
 # Silence warnings caused by passing a pytest fixture to another fixture.
 # pylint: disable=redefined-outer-name
 
-if sys.version_info[1] < 10:
-    raise RuntimeError("Python 3.10 or newer is required to run system tests.")
-
-isctest.log.init_conftest_logger()
-isctest.log.avoid_duplicated_logs()
-isctest.vars.init_vars()
-
 # ----------------------- Globals definition -----------------------------
 
 FILE_DIR = os.path.abspath(Path(__file__).parent)
@@ -69,10 +62,6 @@ PRIORITY_TESTS_RE = Re("|".join(PRIORITY_TESTS))
 SYSTEM_TEST_NAME_RE = Re(f"{SYSTEM_TEST_DIR_GIT_PATH}" + r"/([^/]+)")
 SYMLINK_REPLACEMENT_RE = Re(r"/tests_(.*)\.py")
 
-# ----------------------- Global requirements ----------------------------
-
-isctest.check.is_executable(isctest.vars.ALL["PYTHON"], "Python interpreter required")
-isctest.check.is_executable(isctest.vars.ALL["PERL"], "Perl interpreter required")
 
 # ---- Fix pytest-xdist loadscope for node IDs containing "::" ----------
 
@@ -101,6 +90,23 @@ except ImportError:
 # --------------------------- pytest hooks -------------------------------
 
 
+def pytest_configure(config):  # pylint: disable=unused-argument
+    if sys.version_info < (3, 10):
+        raise RuntimeError("Python 3.10 or newer is required to run system tests.")
+
+    isctest.log.init_conftest_logger()
+    isctest.log.avoid_duplicated_logs()
+    isctest.check.is_executable(
+        isctest.vars.ALL["FEATURETEST"],
+        "Run this first: ninja -C build system-test-dependencies",
+    )
+    isctest.vars.init_vars()
+    isctest.check.is_executable(
+        isctest.vars.ALL["PYTHON"], "Python interpreter required"
+    )
+    isctest.check.is_executable(isctest.vars.ALL["PERL"], "Perl interpreter required")
+
+
 def pytest_addoption(parser):
     parser.addoption(
         "--noclean",