diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2022-01-30 08:43:35 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2022-01-30 12:42:38 -0500 |
commit | d35e8c4624bd074c4e55a8e8a33c343f734299db (patch) | |
tree | 06e5a177ae67d09b4e7c78dd9018040d67212330 | |
parent | ea71ae9a65b14e20c982c818e3c10e50af9ae677 (diff) | |
download | python-coveragepy-git-d35e8c4624bd074c4e55a8e8a33c343f734299db.tar.gz |
debug: better tracing of pytracer changed
-rw-r--r-- | coverage/pytracer.py | 8 | ||||
-rw-r--r-- | tests/test_oddball.py | 9 |
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 |