summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2018-02-02 20:15:58 (GMT)
committerGitHub <noreply@github.com>2018-02-02 20:15:58 (GMT)
commitbbbcf8693b876daae4469765aa62f8924f39a7d2 (patch)
tree25bcb5f1a52c5c6177cc3aaabb626fd42068fe7b /Lib/test
parent383b32fe108ea627699cc9c644fba5f8bae95d73 (diff)
downloadcpython-bbbcf8693b876daae4469765aa62f8924f39a7d2.zip
cpython-bbbcf8693b876daae4469765aa62f8924f39a7d2.tar.gz
cpython-bbbcf8693b876daae4469765aa62f8924f39a7d2.tar.bz2
bpo-32303 - Consistency fixes for namespace loaders (#5481)
* Make sure ``__spec__.loader`` matches ``__loader__`` for namespace packages. * Make sure ``__spec__.origin` matches ``__file__`` for namespace packages. https://bugs.python.org/issue32303 https://bugs.python.org/issue32305
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_importlib/test_api.py6
-rw-r--r--Lib/test/test_importlib/test_namespace_pkgs.py16
2 files changed, 20 insertions, 2 deletions
diff --git a/Lib/test/test_importlib/test_api.py b/Lib/test/test_importlib/test_api.py
index 50dbfe1..8beb424 100644
--- a/Lib/test/test_importlib/test_api.py
+++ b/Lib/test/test_importlib/test_api.py
@@ -305,6 +305,7 @@ class ReloadTests:
expected = {'__name__': name,
'__package__': name,
'__doc__': None,
+ '__file__': None,
}
os.mkdir(name)
with open(bad_path, 'w') as init_file:
@@ -316,8 +317,9 @@ class ReloadTests:
spec = ns.pop('__spec__')
ns.pop('__builtins__', None) # An implementation detail.
self.assertEqual(spec.name, name)
- self.assertIs(spec.loader, None)
- self.assertIsNot(loader, None)
+ self.assertIsNotNone(spec.loader)
+ self.assertIsNotNone(loader)
+ self.assertEqual(spec.loader, loader)
self.assertEqual(set(path),
set([os.path.dirname(bad_path)]))
with self.assertRaises(AttributeError):
diff --git a/Lib/test/test_importlib/test_namespace_pkgs.py b/Lib/test/test_importlib/test_namespace_pkgs.py
index e37d8a1..8e4b5d6 100644
--- a/Lib/test/test_importlib/test_namespace_pkgs.py
+++ b/Lib/test/test_importlib/test_namespace_pkgs.py
@@ -317,5 +317,21 @@ class ReloadTests(NamespacePackageTest):
self.assertEqual(foo.two.attr, 'portion2 foo two')
+class LoaderTests(NamespacePackageTest):
+ paths = ['portion1']
+
+ def test_namespace_loader_consistency(self):
+ # bpo-32303
+ import foo
+ self.assertEqual(foo.__loader__, foo.__spec__.loader)
+ self.assertIsNotNone(foo.__loader__)
+
+ def test_namespace_origin_consistency(self):
+ # bpo-32305
+ import foo
+ self.assertIsNone(foo.__spec__.origin)
+ self.assertIsNone(foo.__file__)
+
+
if __name__ == "__main__":
unittest.main()