Skip to content

Commit

Permalink
test: test which core we get
Browse files Browse the repository at this point in the history
  • Loading branch information
nedbat committed Dec 27, 2023
1 parent b7e0c34 commit 5dad1a1
Showing 1 changed file with 52 additions and 1 deletion.
53 changes: 52 additions & 1 deletion tests/test_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

from tests import testenv
from tests.coveragetest import CoverageTest, TESTS_DIR
from tests.helpers import re_lines, re_lines_text
from tests.helpers import re_line, re_lines, re_lines_text


class ProcessTest(CoverageTest):
Expand Down Expand Up @@ -1081,6 +1081,57 @@ def test_report_99p9_is_not_ok(self) -> None:
assert expected == self.last_line_squeezed(out)


class CoverageCoreTest(CoverageTest):
"""Test that cores are chosen correctly."""
# This doesn't test failure modes, only successful requests.
try:
from coverage.tracer import CTracer
has_ctracer = True
except ImportError:
has_ctracer = False

def test_core_default(self) -> None:
self.del_environ("COVERAGE_TEST_CORES")
self.del_environ("COVERAGE_CORE")
self.make_file("numbers.py", "print(123, 456)")
out = self.run_command("coverage run --debug=sys numbers.py")
assert out.endswith("123 456\n")
core = re_line(r" core:", out).strip()
if self.has_ctracer:
assert core == "core: CTracer"
else:
assert core == "core: PyTracer"

@pytest.mark.skipif(not has_ctracer, reason="No CTracer to request")
def test_core_request_ctrace(self) -> None:
self.del_environ("COVERAGE_TEST_CORES")
self.set_environ("COVERAGE_CORE", "ctrace")
self.make_file("numbers.py", "print(123, 456)")
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: CTracer"

def test_core_request_pytrace(self) -> None:
self.del_environ("COVERAGE_TEST_CORES")
self.set_environ("COVERAGE_CORE", "pytrace")
self.make_file("numbers.py", "print(123, 456)")
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: 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")
self.make_file("numbers.py", "print(123, 456)")
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"


class FailUnderNoFilesTest(CoverageTest):
"""Test that nothing to report results in an error exit status."""
def test_report(self) -> None:
Expand Down

0 comments on commit 5dad1a1

Please sign in to comment.