summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2022-01-30 08:43:35 -0500
committerNed Batchelder <ned@nedbatchelder.com>2022-01-30 12:42:38 -0500
commitd35e8c4624bd074c4e55a8e8a33c343f734299db (patch)
tree06e5a177ae67d09b4e7c78dd9018040d67212330
parentea71ae9a65b14e20c982c818e3c10e50af9ae677 (diff)
downloadpython-coveragepy-git-d35e8c4624bd074c4e55a8e8a33c343f734299db.tar.gz
debug: better tracing of pytracer changed
-rw-r--r--coverage/pytracer.py8
-rw-r--r--tests/test_oddball.py9
2 files changed, 13 insertions, 4 deletions
diff --git a/coverage/pytracer.py b/coverage/pytracer.py
index 7709df34..186eb427 100644
--- a/coverage/pytracer.py
+++ b/coverage/pytracer.py
@@ -68,7 +68,7 @@ class PyTracer:
atexit.register(setattr, self, 'in_atexit', True)
def __repr__(self):
- return "<PyTracer at {}: {} lines in {} files>".format(
+ return "<PyTracer at 0x{:x}: {} lines in {} files>".format(
id(self),
sum(len(v) for v in self.data.values()),
len(self.data),
@@ -267,8 +267,10 @@ class PyTracer:
# has changed to None.
dont_warn = (env.PYPY and env.PYPYVERSION >= (5, 4) and self.in_atexit and tf is None)
if (not dont_warn) and tf != self._trace: # pylint: disable=comparison-with-callable
- msg = f"Trace function changed, measurement is likely wrong: {tf!r}"
- self.warn(msg, slug="trace-changed")
+ self.warn(
+ f"Trace function changed, data is likely wrong: {tf!r} != {self._trace!r}",
+ slug="trace-changed",
+ )
def activity(self):
"""Has there been any activity?"""
diff --git a/tests/test_oddball.py b/tests/test_oddball.py
index 2d0ae7f1..e2c17517 100644
--- a/tests/test_oddball.py
+++ b/tests/test_oddball.py
@@ -4,6 +4,7 @@
"""Oddball cases for testing coverage.py"""
import os.path
+import re
import sys
from flaky import flaky
@@ -132,7 +133,13 @@ class RecursionTest(CoverageTest):
# Get a warning about the stackoverflow effect on the tracing function.
if pytrace: # pragma: no metacov
- assert cov._warnings == ["Trace function changed, measurement is likely wrong: None"]
+ assert len(cov._warnings) == 1
+ assert re.fullmatch(
+ r"Trace function changed, data is likely wrong: None != " +
+ r"<bound method PyTracer._trace of " +
+ "<PyTracer at 0x[0-9a-fA-F]+: 5 lines in 1 files>>",
+ cov._warnings[0],
+ )
else:
assert not cov._warnings