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
commit976c7bf435b11de8f392a967ce20fcafa104319e (patch)
tree72497c790bbbe04cfdff47de6a8ebddbeff0d5ff /coverage/collector.py
parentdff827f46c1e24dc6f56b758a74874297d3f4d7c (diff)
downloadpython-coveragepy-976c7bf435b11de8f392a967ce20fcafa104319e.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 6e2112c..494ad2c 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