diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2018-03-06 08:41:32 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2018-03-06 08:41:32 -0500 |
commit | 94ab016d224eedd46702005398ce53174d65273b (patch) | |
tree | c22b2c5e26659e737b9353e59fc1f96007bbaade | |
parent | 232db5d57c53384162e5704ff405671acd9fe27b (diff) | |
download | python-coveragepy-git-94ab016d224eedd46702005398ce53174d65273b.tar.gz |
check_preimported=True controls whether coverage checks pre-imported files when starting
-rw-r--r-- | coverage/cmdline.py | 1 | ||||
-rw-r--r-- | coverage/control.py | 19 | ||||
-rw-r--r-- | coverage/inorout.py | 3 | ||||
-rw-r--r-- | tests/test_cmdline.py | 2 | ||||
-rw-r--r-- | tests/test_process.py | 2 |
5 files changed, 15 insertions, 12 deletions
diff --git a/coverage/cmdline.py b/coverage/cmdline.py index 7b86054e..04cf8e89 100644 --- a/coverage/cmdline.py +++ b/coverage/cmdline.py @@ -475,6 +475,7 @@ class CoverageScript(object): include=include, debug=debug, concurrency=options.concurrency, + check_preimported=True, ) if options.action == "debug": diff --git a/coverage/control.py b/coverage/control.py index 77efe28b..55c031ae 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -53,15 +53,12 @@ class Coverage(object): cov.html_report(directory='covhtml') """ - # A global to know if we have ever checked for files imported before - # coverage has been started. - _checked_preimported = False def __init__( self, data_file=None, data_suffix=None, cover_pylib=None, auto_data=False, timid=None, branch=None, config_file=True, source=None, omit=None, include=None, debug=None, - concurrency=None, + concurrency=None, check_preimported=False, ): """ `data_file` is the base name of the data file to use, defaulting to @@ -115,12 +112,20 @@ class Coverage(object): "eventlet", "gevent", "multiprocessing", or "thread" (the default). This can also be a list of these strings. + If `check_preimported` is true, then when coverage is started, the + aleady-imported files will be checked to see if they should be measured + by coverage. Importing measured files before coverage is started can + mean that code is missed. + .. versionadded:: 4.0 The `concurrency` parameter. .. versionadded:: 4.2 The `concurrency` parameter can now be a list of strings. + .. versionadded:: 4.6 + The `check_preimported` parameter. + """ # Build our configuration from a number of sources. self.config_file, self.config = read_coverage_config( @@ -141,7 +146,7 @@ class Coverage(object): # Is it ok for no data to be collected? self._warn_no_data = True self._warn_unimported_source = True - self._warn_preimported_source = True + self._warn_preimported_source = check_preimported # A record of all the warnings that have been issued. self._warnings = [] @@ -414,8 +419,8 @@ class Coverage(object): self.load() # See if we think some code that would eventually be measured has already been imported. - if not Coverage._checked_preimported and self._warn_preimported_source: - Coverage._checked_preimported = self._inorout.warn_already_imported_files() + if self._warn_preimported_source: + self._inorout.warn_already_imported_files() self.collector.start() self._started = True diff --git a/coverage/inorout.py b/coverage/inorout.py index 640b4e6f..53ed8ea9 100644 --- a/coverage/inorout.py +++ b/coverage/inorout.py @@ -354,9 +354,6 @@ class InOrOut(object): self.warn(msg, slug="already-imported") warned.add(filename) - return True - return False - def warn_unimported_source(self): for pkg in self.source_pkgs_unmatched: self.warn_about_unmeasured_code(pkg) diff --git a/tests/test_cmdline.py b/tests/test_cmdline.py index 1b7c6653..66fcec3a 100644 --- a/tests/test_cmdline.py +++ b/tests/test_cmdline.py @@ -33,7 +33,7 @@ class BaseCmdLineTest(CoverageTest): defaults.Coverage( cover_pylib=None, data_suffix=None, timid=None, branch=None, config_file=True, source=None, include=None, omit=None, debug=None, - concurrency=None, + concurrency=None, check_preimported=True, ) defaults.annotate( directory=None, ignore_errors=None, include=None, omit=None, morfs=[], diff --git a/tests/test_process.py b/tests/test_process.py index 9d4aa56e..fb08562f 100644 --- a/tests/test_process.py +++ b/tests/test_process.py @@ -589,7 +589,7 @@ class ProcessTest(CoverageTest): self.make_file("hello.py", """\ import goodbye import coverage - cov = coverage.Coverage(include=["good*"]) + cov = coverage.Coverage(include=["good*"], check_preimported=True) cov.start() print(goodbye.f()) cov.stop() |