diff options
| author | Ned Batchelder <ned@nedbatchelder.com> | 2012-12-20 07:02:36 -0500 |
|---|---|---|
| committer | Ned Batchelder <ned@nedbatchelder.com> | 2012-12-20 07:02:36 -0500 |
| commit | ee2a4a2e5f617ddf6bed4c1bade8deb86df6847d (patch) | |
| tree | 5ee73b9be7a7db6de8eaea30a28acb14edfc3ba6 /coverage | |
| parent | 90170a258e53eb7fbe964ddc2dcf7d85718cd0bb (diff) | |
| parent | 857e40a949bd69ad61392a6204cf91df18ea03d8 (diff) | |
| download | python-coveragepy-ee2a4a2e5f617ddf6bed4c1bade8deb86df6847d.tar.gz | |
Merged
Diffstat (limited to 'coverage')
| -rw-r--r-- | coverage/collector.py | 6 | ||||
| -rw-r--r-- | coverage/misc.py | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/coverage/collector.py b/coverage/collector.py index 1b807b2..bf46593 100644 --- a/coverage/collector.py +++ b/coverage/collector.py @@ -2,6 +2,8 @@ import os, sys, threading +from coverage.misc import short_stack + try: # Use the C extension code when we can, for speed. from coverage.tracer import CTracer # pylint: disable=F0401,E0611 @@ -124,8 +126,8 @@ class PyTracer(object): """Stop this Tracer.""" if hasattr(sys, "gettrace") and self.warn: if sys.gettrace() != self._trace: - msg = "Trace function changed, measurement is likely wrong: %r" - self.warn(msg % sys.gettrace()) + msg = "Trace function changed, measurement is likely wrong: %r\n%s" + self.warn(msg % (sys.gettrace(), short_stack())) sys.settrace(None) def get_stats(self): diff --git a/coverage/misc.py b/coverage/misc.py index 3ed854a..b4d1c83 100644 --- a/coverage/misc.py +++ b/coverage/misc.py @@ -54,6 +54,12 @@ def format_lines(statements, lines): return ret +def short_stack(): + """Return a string summarizing the call stack.""" + stack = inspect.stack()[:0:-1] + return "\n".join("%30s : %s @%d" % (t[3],t[1],t[2]) for t in stack) + + def expensive(fn): """A decorator to cache the result of an expensive operation. |
