diff options
Diffstat (limited to 'coverage/collector.py')
-rw-r--r-- | coverage/collector.py | 14 |
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 |