From 822db03d54f5fe3b6064d582677d7b74474682f5 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Sun, 3 Aug 2014 10:12:23 -0700 Subject: ENH: Allow not printing coverage report --- CHANGELOG | 3 ++- README.txt | 4 ++++ nose/plugins/cover.py | 35 +++++++++++++---------------------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index fe2ed89..25d5090 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -32,6 +32,8 @@ 1.3.3 +- Add option to suppress printing of coverage report + Patch by Eric Larson. - Fixed a minor issue with the reported version number. 1.3.2 @@ -883,4 +885,3 @@ - Increased compatibility with python 2.3 (and maybe earlier) - Increased compatibility with tests written for py.test: now calls module.setup_module(module) if module.setup_module() fails - diff --git a/README.txt b/README.txt index 67b8f29..2047e4e 100644 --- a/README.txt +++ b/README.txt @@ -393,6 +393,10 @@ Options Location of coverage config file [NOSE_COVER_CONFIG_FILE] +--cover-no-print + + Suppress printing of coverage information + --pdb Drop into debugger on failures or errors diff --git a/nose/plugins/cover.py b/nose/plugins/cover.py index 0276f2d..0e8392a 100644 --- a/nose/plugins/cover.py +++ b/nose/plugins/cover.py @@ -29,6 +29,7 @@ class Coverage(Plugin): coverInstance = None coverErase = False coverMinPercentage = None + coverNoPrint = False score = 200 status = {} @@ -85,7 +86,8 @@ class Coverage(Plugin): dest="cover_xml", help="Produce XML coverage information") parser.add_option("--cover-xml-file", action="store", - default=env.get('NOSE_COVER_XML_FILE', 'coverage.xml'), + default=env.get('NOSE_COVER_XML_FILE', + 'coverage.xml'), dest="cover_xml_file", metavar="FILE", help="Produce XML coverage information in file") @@ -94,6 +96,10 @@ class Coverage(Plugin): dest="cover_config_file", help="Location of coverage config file " "[NOSE_COVER_CONFIG_FILE]") + parser.add_option("--cover-no-print", action="store_true", + default=env.get('NOSE_COVER_NO_PRINT'), + dest="cover_no_print", + help="Suppress printing of coverage information") def configure(self, options, conf): """ @@ -140,10 +146,7 @@ class Coverage(Plugin): if options.cover_xml: self.coverXmlFile = options.cover_xml_file log.debug('Will put XML coverage report in %s', self.coverXmlFile) - # Coverage uses True to mean default - self.coverConfigFile = True - if options.cover_config_file: - self.coverConfigFile = options.cover_config_file + self.coverNoPrint = options.cover_no_print if self.enabled: self.status['active'] = True self.coverInstance = coverage.coverage(auto_data=False, @@ -153,19 +156,7 @@ class Coverage(Plugin): self.coverInstance.is_worker = conf.worker self.coverInstance.exclude('#pragma[: ]+[nN][oO] [cC][oO][vV][eE][rR]') - 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): + def begin(self): """ Begin recording coverage information. """ @@ -193,10 +184,11 @@ class Coverage(Plugin): self.coverInstance.combine() self.coverInstance.save() modules = [module - for name, module in sys.modules.items() - if self.wantModuleCoverage(name, module)] + for name, module in sys.modules.items() + if self.wantModuleCoverage(name, module)] log.debug("Coverage report will cover modules: %s", modules) - self.coverInstance.report(modules, file=stream) + if not self.coverNoPrint: + self.coverInstance.report(modules, file=stream) import coverage if self.coverHtmlDir: @@ -237,7 +229,6 @@ class Coverage(Plugin): log.error("No total percentage was found in coverage output, " "something went wrong.") - def wantModuleCoverage(self, name, module): if not hasattr(module, '__file__'): log.debug("no coverage of %s: no __file__", name) -- cgit v1.2.1 From cb9b82f03075e103642ca132c6c15b838437017d Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Mon, 11 Aug 2014 08:27:25 -0700 Subject: STY: No double negative --- nose/plugins/cover.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nose/plugins/cover.py b/nose/plugins/cover.py index 0e8392a..527f484 100644 --- a/nose/plugins/cover.py +++ b/nose/plugins/cover.py @@ -29,7 +29,7 @@ class Coverage(Plugin): coverInstance = None coverErase = False coverMinPercentage = None - coverNoPrint = False + coverPrint = True score = 200 status = {} @@ -146,7 +146,7 @@ class Coverage(Plugin): if options.cover_xml: self.coverXmlFile = options.cover_xml_file log.debug('Will put XML coverage report in %s', self.coverXmlFile) - self.coverNoPrint = options.cover_no_print + self.coverPrint = not options.cover_no_print if self.enabled: self.status['active'] = True self.coverInstance = coverage.coverage(auto_data=False, @@ -187,7 +187,7 @@ class Coverage(Plugin): for name, module in sys.modules.items() if self.wantModuleCoverage(name, module)] log.debug("Coverage report will cover modules: %s", modules) - if not self.coverNoPrint: + if self.coverPrint: self.coverInstance.report(modules, file=stream) import coverage -- cgit v1.2.1 From 049b295dccb2b40398d8e0e1e5fccbc2cdf61af8 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Mon, 11 Aug 2014 08:43:26 -0700 Subject: FIX: Add simple test --- CHANGELOG | 4 ++-- nose/plugins/cover.py | 18 ++++++++++++++++-- unit_tests/test_cover_plugin.py | 8 ++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 25d5090..902d606 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ - Fix loading packages from capitalised package on Windows Patch by Thomas Kluyver +- Add option to suppress printing of coverage report + Patch by Eric Larson. 1.3.6 @@ -32,8 +34,6 @@ 1.3.3 -- Add option to suppress printing of coverage report - Patch by Eric Larson. - Fixed a minor issue with the reported version number. 1.3.2 diff --git a/nose/plugins/cover.py b/nose/plugins/cover.py index 527f484..4bae004 100644 --- a/nose/plugins/cover.py +++ b/nose/plugins/cover.py @@ -146,6 +146,10 @@ class Coverage(Plugin): if options.cover_xml: self.coverXmlFile = options.cover_xml_file log.debug('Will put XML coverage report in %s', self.coverXmlFile) + # Coverage uses True to mean default + self.coverConfigFile = True + if options.cover_config_file: + self.coverConfigFile = options.cover_config_file self.coverPrint = not options.cover_no_print if self.enabled: self.status['active'] = True @@ -156,7 +160,18 @@ class Coverage(Plugin): 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. """ @@ -174,7 +189,6 @@ class Coverage(Plugin): self.coverInstance.stop() self.coverInstance.save() - def report(self, stream): """ Output code coverage report. diff --git a/unit_tests/test_cover_plugin.py b/unit_tests/test_cover_plugin.py index b95c590..5999413 100644 --- a/unit_tests/test_cover_plugin.py +++ b/unit_tests/test_cover_plugin.py @@ -1,10 +1,8 @@ import os -import sys from optparse import OptionParser from nose.config import Config from nose.plugins.cover import Coverage from nose.tools import eq_ -import unittest class TestCoveragePlugin(object): @@ -14,6 +12,11 @@ class TestCoveragePlugin(object): ['pkg1', 'pkg2', 'pkg3'], [], 'pkg1,pkg2,pkg3', 'NOSE_COVER_PACKAGE') + def test_cover_options_noprint(self): + _test_options_helper('--cover-no-print', 'coverPrint', + False, True, + env_key='NOSE_COVER_NO_PRINT') + def test_cover_options_erase(self): _test_options_helper('--cover-erase', 'coverErase', True, False, @@ -63,6 +66,7 @@ class TestCoveragePlugin(object): finally: os.unlink('not_default_config_file') + def _test_options_helper(arg_option, cover_option, expected_set, expected_not_set, arg_value=None, env_key=None): -- cgit v1.2.1