summaryrefslogtreecommitdiff
path: root/coverage/plugin_support.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-06-21 12:20:43 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-06-21 12:20:43 -0400
commit3004e9c454aee4642bf8d75dfbc10e62b4050c14 (patch)
tree7b777415a4efea3695142a83a56263cbc8d52e75 /coverage/plugin_support.py
parent54c16b6941acdf3c7b36833841076d352b44acff (diff)
downloadpython-coveragepy-git-3004e9c454aee4642bf8d75dfbc10e62b4050c14.tar.gz
A little more plugin debugging
Diffstat (limited to 'coverage/plugin_support.py')
-rw-r--r--coverage/plugin_support.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/coverage/plugin_support.py b/coverage/plugin_support.py
index 74a0d73d..a1a7b733 100644
--- a/coverage/plugin_support.py
+++ b/coverage/plugin_support.py
@@ -1,5 +1,6 @@
"""Support for plugins."""
+import os.path
import sys
from coverage.misc import CoverageException
@@ -67,9 +68,14 @@ class LabelledDebug(object):
"""Add a label to the writer, and return a new `LabelledDebug`."""
return LabelledDebug(label, self.debug, self.labels)
+ def message_prefix(self):
+ """The prefix to use on messages, combining the labels."""
+ prefixes = self.labels + ['']
+ return ":\n".join(" "*i+label for i, label in enumerate(prefixes))
+
def write(self, message):
"""Write `message`, but with the labels prepended."""
- self.debug.write("%s: %s" % (", ".join(self.labels), message))
+ self.debug.write("%s%s" % (self.message_prefix(), message))
class DebugPluginWrapper(CoveragePlugin):
@@ -107,6 +113,13 @@ class DebugFileTracerWrapper(FileTracer):
self.tracer = tracer
self.debug = debug
+ def _show_frame(self, frame):
+ """A short string identifying a frame, for debug messages."""
+ return "%s@%d" % (
+ os.path.basename(frame.f_code.co_filename),
+ frame.f_lineno,
+ )
+
def source_filename(self):
sfilename = self.tracer.source_filename()
self.debug.write("source_filename() --> %r" % (sfilename,))
@@ -119,12 +132,14 @@ class DebugFileTracerWrapper(FileTracer):
def dynamic_source_filename(self, filename, frame):
dyn = self.tracer.dynamic_source_filename(filename, frame)
- self.debug.write("dynamic_source_filename(%r) --> %r" % (filename, dyn))
+ self.debug.write("dynamic_source_filename(%r, %s) --> %r" % (
+ filename, self._show_frame(frame), dyn,
+ ))
return dyn
def line_number_range(self, frame):
pair = self.tracer.line_number_range(frame)
- self.debug.write("line_number_range() --> %r" % (pair,))
+ self.debug.write("line_number_range(%s) --> %r" % (self._show_frame(frame), pair))
return pair