summaryrefslogtreecommitdiff
path: root/coverage
diff options
context:
space:
mode:
Diffstat (limited to 'coverage')
-rw-r--r--coverage/__init__.py2
-rw-r--r--coverage/control.py14
2 files changed, 14 insertions, 2 deletions
diff --git a/coverage/__init__.py b/coverage/__init__.py
index c787b341..bce40406 100644
--- a/coverage/__init__.py
+++ b/coverage/__init__.py
@@ -33,7 +33,7 @@ def _singleton_method(name):
"""Singleton wrapper around a coverage method."""
global _the_coverage
if not _the_coverage:
- _the_coverage = coverage()
+ _the_coverage = coverage(auto_data=True)
return getattr(_the_coverage, name)(*args, **kwargs)
return wrapper
diff --git a/coverage/control.py b/coverage/control.py
index 32e6fad3..dab9eca4 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -14,7 +14,8 @@ class coverage:
"""Programmatic access to Coverage.
"""
- def __init__(self, data_file=None, data_suffix=False, cover_pylib=False):
+ def __init__(self, data_file=None, data_suffix=False, cover_pylib=False,
+ auto_data=False):
"""Create a new coverage measurement context.
`data_file` is the base name of the data file to use, defaulting to
@@ -26,11 +27,17 @@ class coverage:
with the Python interpreter is measured. This includes the Python
standard library and any packages installed with the interpreter.
+ If `auto_data` is true, then any existing data file will be read when
+ coverage measurement starts, and data will be saved automatically when
+ measurement stops.
+
"""
from coverage.collector import Collector
from coverage import __version__
self.cover_pylib = cover_pylib
+ self.auto_data = auto_data
+
self.exclude_re = ""
self.exclude_list = []
@@ -105,6 +112,11 @@ class coverage:
def start(self):
"""Start measuring code coverage."""
+ if self.auto_data:
+ self.load()
+ # Save coverage data when Python exits.
+ import atexit
+ atexit.register(self.save)
self.collector.start()
def stop(self):