summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-05-08 08:25:46 -0400
committerNed Batchelder <ned@nedbatchelder.com>2016-05-08 08:25:46 -0400
commit7f4997330596325f3ee8a8f26880d45ee7049e67 (patch)
tree92d63796b4bd0e5f729fbf6c656fbacaabd861de /tests
parent4356eab1c258c30b54a55042e872d41e1efec127 (diff)
downloadpython-coveragepy-7f4997330596325f3ee8a8f26880d45ee7049e67.tar.gz
Don't get confused by namespace packages #456
Diffstat (limited to 'tests')
-rw-r--r--tests/test_api.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/test_api.py b/tests/test_api.py
index 3ea5b3e..4c03851 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -9,6 +9,7 @@ import sys
import textwrap
import coverage
+from coverage import env
from coverage.backward import StringIO
from coverage.misc import CoverageException
@@ -322,6 +323,26 @@ class ApiTest(CoverageTest):
self.assert_exists(".coverage.foo")
+class NamespaceModuleTest(CoverageTest):
+ """Test PEP-420 namespace modules."""
+
+ def setUp(self):
+ super(NamespaceModuleTest, self).setUp()
+ if env.PYVERSION < (3, 3):
+ self.skip("Python before 3.3 doesn't have namespace packages")
+
+ def test_explicit_namespace_module(self):
+ self.make_file("namespace/package/module.py", "VAR = 1\n")
+ self.make_file("main.py", "import namespace\n")
+
+ cov = coverage.Coverage()
+ self.start_import_stop(cov, "main")
+
+ with self.assertRaisesRegex(CoverageException, r"Module .* has no file"):
+ cov.analysis(sys.modules['namespace'])
+
+
+
class UsingModulesMixin(object):
"""A mixin for importing modules from test/modules and test/moremodules."""