mirror of
https://github.com/python/cpython
synced 2024-10-14 05:11:22 +00:00
gh-112414: Add additional unit tests for calling repr()
on a namespace package (#112475)
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
This commit is contained in:
parent
562d7149c6
commit
cf2054059c
|
@ -23,10 +23,6 @@ def test___loader__(self):
|
||||||
with util.uncache('blah'), util.import_state(meta_path=[loader]):
|
with util.uncache('blah'), util.import_state(meta_path=[loader]):
|
||||||
module = self.__import__('blah')
|
module = self.__import__('blah')
|
||||||
self.assertEqual(loader, module.__loader__)
|
self.assertEqual(loader, module.__loader__)
|
||||||
expected_repr_pattern = (
|
|
||||||
r"<module 'blah' \(<test\.test_importlib\..*SpecLoaderMock object at .+>\)>"
|
|
||||||
)
|
|
||||||
self.assertRegex(repr(module), expected_repr_pattern)
|
|
||||||
|
|
||||||
|
|
||||||
(Frozen_SpecTests,
|
(Frozen_SpecTests,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
# Test the module type
|
# Test the module type
|
||||||
|
import importlib.machinery
|
||||||
import unittest
|
import unittest
|
||||||
import weakref
|
import weakref
|
||||||
from test.support import gc_collect
|
from test.support import gc_collect
|
||||||
|
@ -264,6 +265,35 @@ def test_module_repr_source(self):
|
||||||
self.assertEqual(r[-len(ends_with):], ends_with,
|
self.assertEqual(r[-len(ends_with):], ends_with,
|
||||||
'{!r} does not end with {!r}'.format(r, ends_with))
|
'{!r} does not end with {!r}'.format(r, ends_with))
|
||||||
|
|
||||||
|
def test_module_repr_with_namespace_package(self):
|
||||||
|
m = ModuleType('foo')
|
||||||
|
loader = importlib.machinery.NamespaceLoader('foo', ['bar'], 'baz')
|
||||||
|
spec = importlib.machinery.ModuleSpec('foo', loader)
|
||||||
|
m.__loader__ = loader
|
||||||
|
m.__spec__ = spec
|
||||||
|
self.assertEqual(repr(m), "<module 'foo' (namespace) from ['bar']>")
|
||||||
|
|
||||||
|
def test_module_repr_with_namespace_package_and_custom_loader(self):
|
||||||
|
m = ModuleType('foo')
|
||||||
|
loader = BareLoader()
|
||||||
|
spec = importlib.machinery.ModuleSpec('foo', loader)
|
||||||
|
m.__loader__ = loader
|
||||||
|
m.__spec__ = spec
|
||||||
|
expected_repr_pattern = r"<module 'foo' \(<.*\.BareLoader object at .+>\)>"
|
||||||
|
self.assertRegex(repr(m), expected_repr_pattern)
|
||||||
|
self.assertNotIn('from', repr(m))
|
||||||
|
|
||||||
|
def test_module_repr_with_fake_namespace_package(self):
|
||||||
|
m = ModuleType('foo')
|
||||||
|
loader = BareLoader()
|
||||||
|
loader._path = ['spam']
|
||||||
|
spec = importlib.machinery.ModuleSpec('foo', loader)
|
||||||
|
m.__loader__ = loader
|
||||||
|
m.__spec__ = spec
|
||||||
|
expected_repr_pattern = r"<module 'foo' \(<.*\.BareLoader object at .+>\)>"
|
||||||
|
self.assertRegex(repr(m), expected_repr_pattern)
|
||||||
|
self.assertNotIn('from', repr(m))
|
||||||
|
|
||||||
def test_module_finalization_at_shutdown(self):
|
def test_module_finalization_at_shutdown(self):
|
||||||
# Module globals and builtins should still be available during shutdown
|
# Module globals and builtins should still be available during shutdown
|
||||||
rc, out, err = assert_python_ok("-c", "from test.test_module import final_a")
|
rc, out, err = assert_python_ok("-c", "from test.test_module import final_a")
|
||||||
|
|
Loading…
Reference in a new issue