/usr/lib/python3/dist-packages/nosexcover/nosexcover.py is in python3-nosexcover 1.0.10-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | """Companion to nose.plugins.cover. Enable by adding --with-xcoverage to your
arguments. A Cobertura-style XML file, honoring the options you pass to
--with-coverage, will be generated in coverage.xml"""
import logging
import sys
try:
# Python 2
import StringIO
except ImportError:
# Python 3
from io import StringIO
from nose.plugins import cover, Plugin
log = logging.getLogger('nose.plugins.xcover')
class XCoverage(cover.Coverage):
"""
Add Cobertura-style XML coverage reports
to the built-in nose.plugins.cover plugin.
"""
def options(self, parser, env):
"""
Add options to command line.
"""
Plugin.options(self, parser, env)
parser.add_option('--xcoverage-file', action='store',
default=env.get('NOSE_XCOVER_FILE', 'coverage.xml'),
dest='xcoverage_file',
metavar="FILE",
help='Path to xml coverage report.'
'Default is coverage.xml in the working directory. '
'[NOSE_XCOVERAGE_FILE]')
parser.add_option('--xcoverage-to-stdout', action='store',
default=env.get('NOSE_XCOVER_TO_STDOUT', True),
dest='xcoverage_to_stdout',
help='Print coverage information to stdout.'
'Default is True (output coverage information to stdout). '
'[NOSE_XCOVER_TO_STDOUT]')
def configure(self, options, config):
coverage_on = options.enable_plugin_coverage
xcoverage_on = options.enable_plugin_xcoverage
if xcoverage_on and coverage_on:
log.error(
"""You can not use both --with-xcover and --with-coverage. Using --with-xcover implies --with-coverage""")
raise TypeError
cover.old_log = cover.log
cover.log = log
super(XCoverage, self).configure(options, config)
cover.log = cover.old_log
self.xcoverageFile = options.xcoverage_file
to_stdout = str(options.xcoverage_to_stdout)
self.xcoverageToStdout = False if '0' in to_stdout or 'false' in to_stdout.lower() else True
def report(self, stream):
"""
Output code coverage report.
"""
if not self.xcoverageToStdout:
# This will create a false stream where output will be ignored
stream = StringIO.StringIO()
super(XCoverage, self).report(stream)
if not hasattr(self, 'coverInstance'):
# nose coverage plugin 1.0 and earlier
import coverage
self.coverInstance = coverage._the_coverage
modules = [module
for name, module in sys.modules.items()
if self.wantModuleCoverage(name, module)]
log.debug("Coverage report will cover modules: %s", modules)
morfs = [m.__file__ for m in modules if hasattr(m, '__file__')]
self.coverInstance.xml_report(morfs, outfile=self.xcoverageFile)
|