From 68937ab398863a94b9ec07cf5b29c90575fa271b Mon Sep 17 00:00:00 2001 From: Florentin Labelle Date: Sun, 11 Jan 2026 19:13:42 +0100 Subject: [PATCH] core: fix --collect-only --- conftest.py | 5 ++++- utils/_context/_scenarios/core.py | 2 ++ utils/_context/core.py | 3 +++ utils/proxy/scrubber.py | 4 ++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/conftest.py b/conftest.py index 990c75c9750..2fb7fc52bea 100644 --- a/conftest.py +++ b/conftest.py @@ -488,9 +488,12 @@ def pytest_sessionfinish(session: pytest.Session, exitstatus: int) -> None: exitstatus = pytest.ExitCode.OK session.exitstatus = pytest.ExitCode.OK + if session.config.option.collectonly: + return + context.scenario.pytest_sessionfinish(session, exitstatus) - if session.config.option.collectonly or session.config.option.replay: + if session.config.option.replay: return # xdist: pytest_sessionfinish function runs at the end of all tests. If you check for the worker input attribute, diff --git a/utils/_context/_scenarios/core.py b/utils/_context/_scenarios/core.py index e7935d1ec02..a5c04adb0ea 100644 --- a/utils/_context/_scenarios/core.py +++ b/utils/_context/_scenarios/core.py @@ -127,6 +127,7 @@ def __init__( group.scenarios.append(self) self.warmups: list[Callable] = [] + self.collect_only: bool = False def _create_log_subfolder(self, subfolder: str, *, remove_if_exists: bool = False): if self.replay: @@ -148,6 +149,7 @@ def __call__(self, test_object): # noqa: ANN001 (tes_object can be a class or a def pytest_configure(self, config: pytest.Config): self.replay = config.option.replay + self.collect_only = config.option.collectonly # https://github.com/pytest-dev/pytest-xdist/issues/271#issuecomment-826396320 # we are in the main worker, not in a xdist sub-worker diff --git a/utils/_context/core.py b/utils/_context/core.py index 0a9453a2bca..5f34a9e40e6 100644 --- a/utils/_context/core.py +++ b/utils/_context/core.py @@ -23,6 +23,9 @@ class _Context: scenario: Scenario # will be set by pytest_configure def _get_scenario_property(self, name: str, default: Any) -> Any: # noqa:ANN401 + if self.scenario.collect_only: + return default + if hasattr(self.scenario, name): return getattr(self.scenario, name) diff --git a/utils/proxy/scrubber.py b/utils/proxy/scrubber.py index 1cc1c916d3a..a7edb7ea2db 100644 --- a/utils/proxy/scrubber.py +++ b/utils/proxy/scrubber.py @@ -32,7 +32,7 @@ def write(data: str): for secret in secrets: data = data.replace(secret, "--redacted--") - original_write(data) + return original_write(data) f.write = write @@ -45,7 +45,7 @@ def write(data: bytes): for secret in secrets: data = data.replace(secret.encode(), b"--redacted--") - original_write(data) + return original_write(data) f.write = write