Add support for pytest>=9.0.0

Use collection_path rather than the deprecated path argument for
pytest_ignore_collect() hook.

The collection_path argument was added in pytest 7.0.0, which is the
minimum supported pytest version from now on.

(cherry picked from commit 093bef9211)
This commit is contained in:
Nicki Křížek 2025-12-16 17:48:04 +01:00
parent 6e98ed3b2b
commit 7c2a8e63f6
2 changed files with 4 additions and 7 deletions

View file

@ -549,10 +549,6 @@ stages:
- ( if [ "${CI_DISPOSABLE_ENVIRONMENT}" = "true" ]; then sleep 3000; "$PYTHON" "${CI_PROJECT_DIR}/util/get-running-system-tests.py"; fi ) &
- cd bin/tests/system
- RET=0
# With pytest 9.0, there's the following error in pytest_ignore_collect():
# The (path: py.path.local) argument is deprecated, please use (collection_path: pathlib.Path).
# This should be fixed before pytest 9.1, when it becomes ineffective.
- if pytest --version | grep -F "pytest 9.0" >/dev/null; then echo "filterwarnings = ignore::pytest.PytestRemovedIn9Warning" >> pytest.ini; fi
- >
("$PYTEST" --junit-xml="$CI_PROJECT_DIR"/junit_pytest.xml -n "$TEST_PARALLEL_JOBS" | tee pytest.out.txt) || RET=1
- *git_clone_bind9-qa
@ -1011,6 +1007,7 @@ cross-version-config-tests:
untracked: true
expire_in: "1 day"
when: always
allow_failure: true # GL!11415
# Jobs for regular GCC builds on Alpine Linux 3.23 (amd64)

View file

@ -102,7 +102,7 @@ def pytest_configure(config):
config.option.dist = "loadscope"
def pytest_ignore_collect(path):
def pytest_ignore_collect(collection_path):
# System tests are executed in temporary directories inside
# bin/tests/system. These temporary directories contain all files
# needed for the system tests - including tests_*.py files. Make sure to
@ -111,9 +111,9 @@ def pytest_ignore_collect(path):
# convenience symlinks to those test directories. In both of those
# cases, the system test name (directory) contains an underscore, which
# is otherwise and invalid character for a system test name.
match = SYSTEM_TEST_NAME_RE.search(str(path))
match = SYSTEM_TEST_NAME_RE.search(str(collection_path))
if match is None:
isctest.log.warning("unexpected test path: %s (ignored)", path)
isctest.log.warning("unexpected test path: %s (ignored)", collection_path)
return True
system_test_name = match.groups()[0]
return "_" in system_test_name