diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2016-05-08 08:25:46 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2016-05-08 08:25:46 -0400 |
commit | b918987030fadd52f47cb8b2067e54c59a73d794 (patch) | |
tree | 8c0a85e120b165218bdc90398f92612ec49ad9c5 /coverage/python.py | |
parent | 36d94fb250dcc838a0fd8f83bb8a6ad53665cb37 (diff) | |
download | python-coveragepy-git-b918987030fadd52f47cb8b2067e54c59a73d794.tar.gz |
Don't get confused by namespace packages #456
Diffstat (limited to 'coverage/python.py')
-rw-r--r-- | coverage/python.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/coverage/python.py b/coverage/python.py index 0cd2181c..8e98bea8 100644 --- a/coverage/python.py +++ b/coverage/python.py @@ -4,10 +4,13 @@ """Python source expertise for coverage.py""" import os.path +import types import zipimport from coverage import env, files -from coverage.misc import contract, expensive, NoSource, join_regex, isolate_module +from coverage.misc import ( + contract, CoverageException, expensive, NoSource, join_regex, isolate_module, +) from coverage.parser import PythonParser from coverage.phystokens import source_token_lines, source_encoding from coverage.plugin import FileReporter @@ -94,6 +97,10 @@ class PythonFileReporter(FileReporter): if hasattr(morf, '__file__'): filename = morf.__file__ + elif isinstance(morf, types.ModuleType): + # A module should have had .__file__, otherwise we can't use it. + # This could be a PEP-420 namespace package. + raise CoverageException("Module {0} has no file".format(morf)) else: filename = morf |