summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2014-11-28 18:02:57 -0500
committerNed Batchelder <ned@nedbatchelder.com>2014-11-28 18:02:57 -0500
commit025cc4ab92236971adc3961e0a177019fed2e6fd (patch)
treeded801b16640a4fd0b948a34b56d4836e4cb14a6 /coverage
parentc58e10eab269470747eb4172975ec9766b61682f (diff)
downloadpython-coveragepy-git-025cc4ab92236971adc3961e0a177019fed2e6fd.tar.gz
Make sure check_include isn't called more than once per file.
Diffstat (limited to 'coverage')
-rw-r--r--coverage/control.py2
-rw-r--r--coverage/pytracer.py6
2 files changed, 7 insertions, 1 deletions
diff --git a/coverage/control.py b/coverage/control.py
index cb614d56..7e338625 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -936,6 +936,8 @@ class FileDisposition(object):
"""Produce a debugging message explaining the outcome."""
if self.trace:
msg = "Tracing %r" % (self.original_filename,)
+ if self.file_tracer:
+ msg += ": will be traced by %r" % self.file_tracer
else:
msg = "Not tracing %r: %s" % (self.original_filename, self.reason)
return msg
diff --git a/coverage/pytracer.py b/coverage/pytracer.py
index 98b52028..16a51c2b 100644
--- a/coverage/pytracer.py
+++ b/coverage/pytracer.py
@@ -87,7 +87,11 @@ class PyTracer(object):
if disp.file_tracer and disp.has_dynamic_filename:
tracename = disp.file_tracer.dynamic_source_filename(tracename, frame)
if tracename:
- if not self.check_include(tracename, frame):
+ included = self.should_trace_cache.get(tracename)
+ if included is None:
+ included = self.check_include(tracename, frame)
+ self.should_trace_cache[tracename] = included
+ if not included:
tracename = None
else:
tracename = None