diff options
author | Barry Warsaw <barry@python.org> | 2018-02-02 20:15:58 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-02 20:15:58 (GMT) |
commit | bbbcf8693b876daae4469765aa62f8924f39a7d2 (patch) | |
tree | 25bcb5f1a52c5c6177cc3aaabb626fd42068fe7b /Lib/test | |
parent | 383b32fe108ea627699cc9c644fba5f8bae95d73 (diff) | |
download | cpython-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.py | 6 | ||||
-rw-r--r-- | Lib/test/test_importlib/test_namespace_pkgs.py | 16 |
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() |