summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Grasset <nicolas.grasset@gmail.com>2014-09-12 14:50:37 -0400
committerNicolas Grasset <nicolas.grasset@gmail.com>2014-09-12 14:50:37 -0400
commite2f78d842e614651e3dbc3c27721069999133e30 (patch)
tree34a1efa1ccb2a1d3ac95d5ccda0fa2ee5ce9c1d3
parent08d134270b035dac3310cd877bb0fe9ab678303a (diff)
downloadnose-e2f78d842e614651e3dbc3c27721069999133e30.tar.gz
[plugins] Handle multiprocess & cover together
-rw-r--r--nose/plugins/cover.py44
1 files changed, 31 insertions, 13 deletions
diff --git a/nose/plugins/cover.py b/nose/plugins/cover.py
index 551f332..8909479 100644
--- a/nose/plugins/cover.py
+++ b/nose/plugins/cover.py
@@ -99,8 +99,6 @@ class Coverage(Plugin):
except KeyError:
pass
super(Coverage, self).configure(options, conf)
- if conf.worker:
- return
if self.enabled:
try:
import coverage
@@ -139,23 +137,43 @@ class Coverage(Plugin):
log.debug('Will put XML coverage report in %s', self.coverXmlFile)
if self.enabled:
self.status['active'] = True
+ self.coverInstance.is_worker = conf.worker
self.coverInstance = coverage.coverage(auto_data=False,
- branch=self.coverBranches, data_suffix=None,
+ branch=self.coverBranches, data_suffix=conf.worker,
source=self.coverPackages)
+ self.coverInstance._warn_no_data = False
+ self.coverInstance.exclude('#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]')
- def begin(self):
+ log.debug("Coverage begin")
+ self.skipModules = sys.modules.keys()[:]
+ if self.coverErase:
+ log.debug("Clearing previously collected coverage statistics")
+ self.coverInstance.combine()
+ self.coverInstance.erase()
+
+ if not self.coverInstance.is_worker:
+ self.coverInstance.load()
+ self.coverInstance.start()
+
+
+ def beforeTest(self, *args, **kwargs):
"""
Begin recording coverage information.
"""
- log.debug("Coverage begin")
- self.skipModules = sys.modules.keys()[:]
- if self.coverErase:
- log.debug("Clearing previously collected coverage statistics")
- self.coverInstance.combine()
- self.coverInstance.erase()
- self.coverInstance.exclude('#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]')
- self.coverInstance.load()
- self.coverInstance.start()
+
+ if self.coverInstance.is_worker:
+ self.coverInstance.load()
+ self.coverInstance.start()
+
+ def afterTest(self, *args, **kwargs):
+ """
+ Stop recording coverage information.
+ """
+
+ if self.coverInstance.is_worker:
+ self.coverInstance.stop()
+ self.coverInstance.save()
+
def report(self, stream):
"""