summaryrefslogtreecommitdiff
path: root/coverage/control.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2019-06-23 07:14:16 -0400
committerNed Batchelder <ned@nedbatchelder.com>2019-06-25 09:54:41 -0400
commite9e703c7885840412295a0aaf3c84b5244483881 (patch)
treeab63e85a914e00207b2e3ae0614c11ea766d7813 /coverage/control.py
parente126d4720a4abad33a772734e0a0b40403b974d2 (diff)
downloadpython-coveragepy-git-e9e703c7885840412295a0aaf3c84b5244483881.tar.gz
New API: Coverage.current() returns the latest started instance.
Diffstat (limited to 'coverage/control.py')
-rw-r--r--coverage/control.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/coverage/control.py b/coverage/control.py
index c398f2a7..03e36324 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -55,6 +55,17 @@ class Coverage(object):
"""
+ # The stack of started Coverage instances.
+ _instances = []
+
+ @classmethod
+ def current(cls):
+ """Get the latest started `Coverage` instance, if any."""
+ if cls._instances:
+ return cls._instances[-1]
+ else:
+ return None
+
def __init__(
self, data_file=None, data_suffix=None, cover_pylib=None,
auto_data=False, timid=None, branch=None, config_file=True,
@@ -453,9 +464,13 @@ class Coverage(object):
self._collector.start()
self._started = True
+ self._instances.append(self)
def stop(self):
"""Stop measuring code coverage."""
+ if self._instances:
+ if self._instances[-1] is self:
+ self._instances.pop()
if self._started:
self._collector.stop()
self._started = False