summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2015-04-04 04:41:54 -0400
committerJohn Szakmeister <john@szakmeister.net>2015-04-04 04:41:54 -0400
commit3151de8b387ae43a834b67f6ab726c42d110c3ef (patch)
tree77369b6d7d3bc9ede4daaf304e7c298b5e703d0d
parentb6b6219ec04de645199b05ed75af2520d3390cd7 (diff)
parent6e47b6db22110b6c9b61b14cb09962fcce84d2bf (diff)
downloadnose-3151de8b387ae43a834b67f6ab726c42d110c3ef.tar.gz
Merge pull request #841 from fellowshipofone/master
[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..fbe2e30 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
@@ -140,22 +138,42 @@ class Coverage(Plugin):
if self.enabled:
self.status['active'] = True
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.is_worker = conf.worker
+ 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):
"""