summaryrefslogtreecommitdiff
path: root/coverage/collector.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2009-11-22 09:44:28 -0500
committerNed Batchelder <ned@nedbatchelder.com>2009-11-22 09:44:28 -0500
commit0ed7fed2d04110831234794e2ad2e59e183b0db9 (patch)
tree7323d1f978e06961d49b278812e3f1d7237e88dc /coverage/collector.py
parent2eab922bf04de0278d4ab2d326d40ac4c6fd6ea8 (diff)
downloadpython-coveragepy-git-0ed7fed2d04110831234794e2ad2e59e183b0db9.tar.gz
Add statistics gathering to help find a problem in the C tracer.
Diffstat (limited to 'coverage/collector.py')
-rw-r--r--coverage/collector.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/coverage/collector.py b/coverage/collector.py
index 1a831c19..5bbd02e0 100644
--- a/coverage/collector.py
+++ b/coverage/collector.py
@@ -94,6 +94,10 @@ class PyTracer(object):
"""Stop this Tracer."""
sys.settrace(None)
+ def get_stats(self):
+ """Return a dictionary of statistics, or None."""
+ return None
+
class Collector(object):
"""Collects trace data.
@@ -203,9 +207,9 @@ class Collector(object):
assert self._collectors
assert self._collectors[-1] is self
- self.pause()
+ self.pause()
self.tracers = []
-
+
# Remove this Collector from the stack, and resume the one underneath
# (if any).
self._collectors.pop()
@@ -216,6 +220,11 @@ class Collector(object):
"""Pause tracing, but be prepared to `resume`."""
for tracer in self.tracers:
tracer.stop()
+ stats = tracer.get_stats()
+ if stats:
+ print("\nCoverage.py tracer stats:")
+ for k in sorted(stats.keys()):
+ print("%16s: %s" % (k, stats[k]))
threading.settrace(None)
def resume(self):