Skip to content

Commit

Permalink
Create Way to force package even if filepath exists
Browse files Browse the repository at this point in the history
Fixes: nedbat#268
  • Loading branch information
graingert committed Sep 2, 2020
1 parent c315908 commit 4272644
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 1 deletion.
2 changes: 2 additions & 0 deletions coverage/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ def __init__(self):
self.run_include = None
self.run_omit = None
self.source = None
self.source_pkgs = []
self.timid = False
self._crash = None

Expand Down Expand Up @@ -361,6 +362,7 @@ def copy(self):
('run_include', 'run:include', 'list'),
('run_omit', 'run:omit', 'list'),
('source', 'run:source', 'list'),
('source_pkgs', 'run:source_pkgs', 'list'),
('timid', 'run:timid', 'boolean'),
('_crash', 'run:_crash'),

Expand Down
3 changes: 2 additions & 1 deletion coverage/control.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def __init__(
self, data_file=_DEFAULT_DATAFILE, 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, check_preimported=False, context=None,
concurrency=None, check_preimported=False, context=None, **kwargs
):
"""
Many of these arguments duplicate and override values that can be
Expand Down Expand Up @@ -191,6 +191,7 @@ def __init__(
source=source, run_omit=omit, run_include=include, debug=debug,
report_omit=omit, report_include=include,
concurrency=concurrency, context=context,
**kwargs
)

# This is injectable by tests.
Expand Down
1 change: 1 addition & 0 deletions coverage/inorout.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ def __init__(self, warn, debug):

def configure(self, config):
"""Apply the configuration to get ready for decision-time."""
self.source_pkgs.extend(config.source_pkgs)
for src in config.source or []:
if os.path.isdir(src):
self.source.append(canonical_filename(src))
Expand Down
Empty file.
Empty file.
Empty file.
21 changes: 21 additions & 0 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -895,6 +895,27 @@ def test_source_package_as_dir(self):
# Because source= was specified, we do search for unexecuted files.
self.assertEqual(lines['p1c'], 0)

def test_ambigious_source_package_as_dir(self):
# pkg1 is a directory and a pkg, since we cd into tests/modules/ambigious
self.chdir(self.nice_file(TESTS_DIR, 'modules', "ambigious"))
lines = self.coverage_usepkgs(source=["pkg1"])
self.assertEqual(
self.coverage_usepkgs(source=["pkg1"]),
{
u"__init__.py": 0, u"__init__": 0,
u"ambigious.py": 0, u"ambigious": 0,
},
)

def test_ambigious_source_package_as_package(self):
# pkg1 is a directory and a pkg, since we cd into tests/modules/ambigious
self.chdir(self.nice_file(TESTS_DIR, 'modules', "ambigious"))
lines = self.coverage_usepkgs(source_pkgs=["pkg1"])
self.filenames_in(lines, "p1a p1b")
self.filenames_not_in(lines, "p2a p2b othera otherb osa osb ambigious")
# Because source= was specified, we do search for unexecuted files.
self.assertEqual(lines['p1c'], 0)

def test_source_package_as_package(self):
lines = self.coverage_usepkgs(source=["pkg1.sub"])
self.filenames_not_in(lines, "p2a p2b othera otherb osa osb")
Expand Down
2 changes: 2 additions & 0 deletions tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,7 @@ class ConfigFileTest(UsingModulesMixin, CoverageTest):
; this omit is overriden by the omit from [report]
omit = twenty
source = myapp
source_pkgs = ned
plugins =
plugins.a_plugin
plugins.another
Expand Down Expand Up @@ -553,6 +554,7 @@ def assert_config_settings_are_correct(self, cov):
self.assertTrue(cov.config.parallel)
self.assertEqual(cov.config.concurrency, ["thread"])
self.assertEqual(cov.config.source, ["myapp"])
self.assertEqual(cov.config.source_pkgs, ["ned"])
self.assertEqual(cov.config.disable_warnings, ["abcd", "efgh"])

self.assertEqual(cov.get_exclude_list(), ["if 0:", r"pragma:?\s+no cover", "another_tab"])
Expand Down

0 comments on commit 4272644

Please sign in to comment.