summaryrefslogtreecommitdiff
path: root/coverage/noseplugin.py
diff options
context:
space:
mode:
authorDavid Stanek <dstanek@dstanek.com>2010-05-21 23:26:51 -0400
committerDavid Stanek <dstanek@dstanek.com>2010-05-21 23:26:51 -0400
commit5b078202a2a80dfb40084a41d97ccd8859750fd1 (patch)
tree330be09dfe7ff46449b9a38879523e07a1fddb02 /coverage/noseplugin.py
parent51e42b3e3c0f92568a8e058189585c2baf3ca4ff (diff)
parent7ccdc87d3e4ad3a7933c3fc34e37213f36f3229a (diff)
downloadpython-coveragepy-git-5b078202a2a80dfb40084a41d97ccd8859750fd1.tar.gz
merged in latest changes from Ned's repo
Diffstat (limited to 'coverage/noseplugin.py')
-rw-r--r--coverage/noseplugin.py67
1 files changed, 67 insertions, 0 deletions
diff --git a/coverage/noseplugin.py b/coverage/noseplugin.py
new file mode 100644
index 00000000..b2bf9b5a
--- /dev/null
+++ b/coverage/noseplugin.py
@@ -0,0 +1,67 @@
+import logging
+import unittest, os
+from nose.plugins import Plugin
+import sys
+
+from coverage.testplugin import CoverageTestWrapper, options as coverage_opts
+
+log = logging.getLogger(__name__)
+
+
+class Coverage(Plugin):
+ """
+ Activate a coverage report using Ned Batchelder's coverage module.
+ """
+
+ name = "coverage_new"
+ score = 1
+ status = {}
+
+ def options(self, parser, env):
+ """
+ Add options to command line.
+ """
+ Plugin.options(self, parser, env)
+ for opt in coverage_opts:
+ parser.add_option(opt)
+
+ def configure(self, options, config):
+ """
+ Configure plugin.
+ """
+ try:
+ self.status.pop('active')
+ except KeyError:
+ pass
+ Plugin.configure(self, options, config)
+ if self.enabled:
+ try:
+ import coverage
+ except ImportError:
+ log.error("Coverage not available: "
+ "unable to import coverage module")
+ self.enabled = False
+ return
+
+ self.config = config
+ self.status['active'] = True
+ self.options = options
+
+ def begin(self):
+ """
+ Begin recording coverage information.
+ """
+ log.debug("Coverage begin")
+ # Load the runner and start it up
+ self.coverage = CoverageTestWrapper(self.options)
+ self.coverage.start()
+
+ def report(self, stream):
+ """
+ Output code coverage report.
+ """
+ log.debug("Coverage report")
+ stream.write("Processing Coverage...")
+ # finish up with coverage
+ self.coverage.finish(stream)
+