From 8b0e0398983592f4a432b656910d67aa5d14021d Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Tue, 20 Feb 2024 14:48:45 +0200 Subject: [PATCH] fix: only use "sysmon" core when available (Python 3.12+) (#1747) * Only use sysmon core when available (Python 3.12+) * Update test case for both with and without SysMonitor --- coverage/collector.py | 4 ++++ tests/test_process.py | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/coverage/collector.py b/coverage/collector.py index 1fd06dbb5..65e329822 100644 --- a/coverage/collector.py +++ b/coverage/collector.py @@ -150,6 +150,10 @@ def __init__( core = "pytrace" else: core = os.getenv("COVERAGE_CORE") + + if core == "sysmon" and not env.PYBEHAVIOR.pep669: + core = None + if not core: # Once we're comfortable with sysmon as a default: # if env.PYBEHAVIOR.pep669 and self.should_start_context is None: diff --git a/tests/test_process.py b/tests/test_process.py index 5aeb49744..8146e0d17 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -1122,7 +1122,6 @@ def test_core_request_pytrace(self) -> None: core = re_line(r" core:", out).strip() assert core == "core: PyTracer" - @pytest.mark.skipif(not env.PYBEHAVIOR.pep669, reason="No sys.monitoring to request") def test_core_request_sysmon(self) -> None: self.del_environ("COVERAGE_TEST_CORES") self.set_environ("COVERAGE_CORE", "sysmon") @@ -1130,7 +1129,10 @@ def test_core_request_sysmon(self) -> None: out = self.run_command("coverage run --debug=sys numbers.py") assert out.endswith("123 456\n") core = re_line(r" core:", out).strip() - assert core == "core: SysMonitor" + if env.PYBEHAVIOR.pep669: + assert core == "core: SysMonitor" + else: + assert core in ("core: CTracer", "core: PyTracer") class FailUnderNoFilesTest(CoverageTest):