Skip to content

Commit bea6204

Browse files
committed
fix: better defaulting of core
1 parent 7795441 commit bea6204

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

CHANGES.rst

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@ upgrading your version of coverage.py.
2323
Unreleased
2424
----------
2525

26-
Nothing yet.
26+
- The "no-ctracer" warning is not issued for Python pre-release versions.
27+
Coverage doesn't ship compiled wheels for those versions, so this was far too
28+
noisy.
29+
30+
- On Python 3.14+, the "sysmon" core is now the default if it's supported for
31+
your configuration. Plugins and dynamic contexts are still not supported
32+
with it.
2733

2834

2935
.. start-releases

coverage/core.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,11 @@ def __init__(
8888
if core_name is None:
8989
if env.SYSMON_DEFAULT and not reason_no_sysmon:
9090
core_name = "sysmon"
91-
elif CTRACER_FILE:
92-
core_name = "ctrace"
9391
else:
92+
core_name = "ctrace"
93+
94+
if core_name == "ctrace":
95+
if not CTRACER_FILE:
9496
if IMPORT_ERROR and env.SHIPPING_WHEELS:
9597
warn(f"Couldn't import C tracer: {IMPORT_ERROR}", slug="no-ctracer", once=True)
9698
core_name = "pytrace"

tests/test_process.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1133,8 +1133,8 @@ def test_core_default(self) -> None:
11331133
self.make_file("numbers.py", "print(123, 456)")
11341134
out = self.run_command("coverage run --debug=sys numbers.py")
11351135
assert out.endswith("123 456\n")
1136-
warns = re_lines(r"\(no-ctracer\)", out)
11371136
core = re_line(r" core:", out).strip()
1137+
warns = re_lines(r"\(no-ctracer\)", out)
11381138
if env.SYSMON_DEFAULT:
11391139
assert core == "core: SysMonitor"
11401140
assert not warns
@@ -1154,6 +1154,18 @@ def test_core_request_ctrace(self) -> None:
11541154
core = re_line(r" core:", out).strip()
11551155
assert core == "core: CTracer"
11561156

1157+
@pytest.mark.skipif(has_ctracer, reason="CTracer needs to be missing")
1158+
def test_core_request_ctrace_but_missing(self) -> None:
1159+
self.del_environ("COVERAGE_CORE")
1160+
self.make_file(".coveragerc", "[run]\ncore = ctrace\n")
1161+
self.make_file("numbers.py", "print(123, 456)")
1162+
out = self.run_command("coverage run --debug=sys,pybehave numbers.py")
1163+
assert out.endswith("123 456\n")
1164+
core = re_line(r" core:", out).strip()
1165+
assert core == "core: PyTracer"
1166+
warns = re_lines(r"\(no-ctracer\)", out)
1167+
assert bool(warns) == env.SHIPPING_WHEELS
1168+
11571169
def test_core_request_pytrace(self) -> None:
11581170
self.set_environ("COVERAGE_CORE", "pytrace")
11591171
self.make_file("numbers.py", "print(123, 456)")

0 commit comments

Comments
 (0)