diff options
author | Nicolas Grasset <nicolas.grasset@gmail.com> | 2014-09-12 14:50:37 -0400 |
---|---|---|
committer | Nicolas Grasset <nicolas.grasset@gmail.com> | 2014-09-12 14:50:37 -0400 |
commit | e2f78d842e614651e3dbc3c27721069999133e30 (patch) | |
tree | 34a1efa1ccb2a1d3ac95d5ccda0fa2ee5ce9c1d3 | |
parent | 08d134270b035dac3310cd877bb0fe9ab678303a (diff) | |
download | nose-e2f78d842e614651e3dbc3c27721069999133e30.tar.gz |
[plugins] Handle multiprocess & cover together
-rw-r--r-- | nose/plugins/cover.py | 44 |
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): """ |