From 2b56b9beea38e30e7485fe0210660aa64cf4f77b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicki=20K=C5=99=C3=AD=C5=BEek?= Date: Tue, 30 Dec 2025 13:45:50 +0100 Subject: [PATCH] Bump the minimum required python version to 3.10 Drop support of EoL python versions for running system tests. The maintenance cost of supporting end of life ecosystem, especially Python 3.6 on EL8 and the related outdated packages (pytest, dnspython, ...), has become unreasonable. (cherry picked from commit ac8e2905b89d69318ef5351dbffcedcc2f8bdcf9) --- bin/tests/system/conftest.py | 13 +++++-------- configure.ac | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/bin/tests/system/conftest.py b/bin/tests/system/conftest.py index d0aaa2b634..fe3e406367 100644 --- a/bin/tests/system/conftest.py +++ b/bin/tests/system/conftest.py @@ -19,6 +19,7 @@ import subprocess import tempfile import time from typing import Dict, List, Optional +import sys import pytest @@ -30,6 +31,8 @@ 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.") # ----------------------- Globals definition ----------------------------- @@ -409,12 +412,6 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): assert all(res.outcome == "passed" for res in test_results.values()) return "passed" - def unlink(path): - try: - path.unlink() # missing_ok=True isn't available on Python 3.6 - except FileNotFoundError: - pass - def check_artifacts(source_dir, run_dir): def check_artifacts_recursive(dcmp): def artifact_expected(path, expected): @@ -459,7 +456,7 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): # Create a convenience symlink with a stable and predictable name module_name = SYMLINK_REPLACEMENT_RE.sub(r"\1", str(request.node.path)) symlink_dst = system_test_root / module_name - unlink(symlink_dst) + symlink_dst.unlink(missing_ok=True) symlink_dst.symlink_to(os.path.relpath(testdir, start=system_test_root)) isctest.log.init_module_logger(system_test_name, testdir) @@ -508,7 +505,7 @@ def system_test_dir(request, env, system_test_name, expected_artifacts): isctest.log.deinit_module_logger() if not keep: shutil.rmtree(testdir) - unlink(symlink_dst) + symlink_dst.unlink(missing_ok=True) @pytest.fixture(scope="module") diff --git a/configure.ac b/configure.ac index 125e31d26b..300035968b 100644 --- a/configure.ac +++ b/configure.ac @@ -240,7 +240,7 @@ AM_CONDITIONAL([HAVE_PERL], [test -n "$PERL"]) # # Python is optional, it is used only by some of the system test scripts. # -AM_PATH_PYTHON([3.6], [], [:]) +AM_PATH_PYTHON([3.10], [], [:]) AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"]) AC_PATH_PROGS([PYTEST], [pytest-3 py.test-3 pytest py.test pytest-pypy], [])