summaryrefslogtreecommitdiff
path: root/coverage/collector.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-08-23 13:26:23 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-08-23 13:26:23 -0400
commitd3a77dc571658353a23385651fd8569fee7b5e22 (patch)
treec424060909bb8eda186b8ac686a8c0a439cf4b14 /coverage/collector.py
parent4aaca3a49a51cb710d18b7ac7c3c2e52a7dc73c1 (diff)
downloadpython-coveragepy-git-d3a77dc571658353a23385651fd8569fee7b5e22.tar.gz
Make metacov run without errors.
Diffstat (limited to 'coverage/collector.py')
-rw-r--r--coverage/collector.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/coverage/collector.py b/coverage/collector.py
index 6e2112c0..494ad2ce 100644
--- a/coverage/collector.py
+++ b/coverage/collector.py
@@ -231,6 +231,17 @@ class Collector(object):
"""Start collecting trace information."""
if self._collectors:
self._collectors[-1].pause()
+
+ try:
+ # Install the tracer on this thread.
+ fn = self._start_tracer()
+ except:
+ if self._collectors:
+ self._collectors[-1].resume()
+ raise
+
+ # If _start_tracer succeeded, then we add ourselves to the global
+ # stack of collectors.
self._collectors.append(self)
# Check to see whether we had a fullcoverage tracer installed.
@@ -241,9 +252,6 @@ class Collector(object):
if tracer0:
traces0 = getattr(tracer0, 'traces', [])
- # Install the tracer on this thread.
- fn = self._start_tracer()
-
# Replay all the events from fullcoverage into the new trace function.
for args in traces0:
(frame, event, arg), lineno = args