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
commitfefdf345a788b85633c48012693926c5c3e7261e (patch)
treedb57a1854fefa7d467dc21c81305537c9fecad9e /coverage/collector.py
parentd0f86e760c5abc96d9c8d5bb2c3279aa3facafcf (diff)
downloadpython-coveragepy-fefdf345a788b85633c48012693926c5c3e7261e.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 1a831c1..5bbd02e 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):