(Merge 3.2) Issue #11614: Fix importlib tests for the new __hello__ module
This commit is contained in:
commit
82f46144cc
|
@ -3,20 +3,21 @@ import imp
|
||||||
import unittest
|
import unittest
|
||||||
from .. import abc
|
from .. import abc
|
||||||
from .. import util
|
from .. import util
|
||||||
|
from test.support import captured_stdout
|
||||||
|
|
||||||
class LoaderTests(abc.LoaderTests):
|
class LoaderTests(abc.LoaderTests):
|
||||||
|
|
||||||
def test_module(self):
|
def test_module(self):
|
||||||
with util.uncache('__hello__'):
|
with util.uncache('__hello__'), captured_stdout() as stdout:
|
||||||
module = machinery.FrozenImporter.load_module('__hello__')
|
module = machinery.FrozenImporter.load_module('__hello__')
|
||||||
check = {'__name__': '__hello__', '__file__': '<frozen>',
|
check = {'__name__': '__hello__', '__file__': '<frozen>',
|
||||||
'__package__': '', '__loader__': machinery.FrozenImporter}
|
'__package__': '', '__loader__': machinery.FrozenImporter}
|
||||||
for attr, value in check.items():
|
for attr, value in check.items():
|
||||||
self.assertEqual(getattr(module, attr), value)
|
self.assertEqual(getattr(module, attr), value)
|
||||||
|
self.assertEqual(stdout.getvalue(), 'Hello world!\n')
|
||||||
|
|
||||||
def test_package(self):
|
def test_package(self):
|
||||||
with util.uncache('__phello__'):
|
with util.uncache('__phello__'), captured_stdout() as stdout:
|
||||||
module = machinery.FrozenImporter.load_module('__phello__')
|
module = machinery.FrozenImporter.load_module('__phello__')
|
||||||
check = {'__name__': '__phello__', '__file__': '<frozen>',
|
check = {'__name__': '__phello__', '__file__': '<frozen>',
|
||||||
'__package__': '__phello__', '__path__': ['__phello__'],
|
'__package__': '__phello__', '__path__': ['__phello__'],
|
||||||
|
@ -26,9 +27,11 @@ class LoaderTests(abc.LoaderTests):
|
||||||
self.assertEqual(attr_value, value,
|
self.assertEqual(attr_value, value,
|
||||||
"for __phello__.%s, %r != %r" %
|
"for __phello__.%s, %r != %r" %
|
||||||
(attr, attr_value, value))
|
(attr, attr_value, value))
|
||||||
|
self.assertEqual(stdout.getvalue(), 'Hello world!\n')
|
||||||
|
|
||||||
def test_lacking_parent(self):
|
def test_lacking_parent(self):
|
||||||
with util.uncache('__phello__', '__phello__.spam'):
|
with util.uncache('__phello__', '__phello__.spam'), \
|
||||||
|
captured_stdout() as stdout:
|
||||||
module = machinery.FrozenImporter.load_module('__phello__.spam')
|
module = machinery.FrozenImporter.load_module('__phello__.spam')
|
||||||
check = {'__name__': '__phello__.spam', '__file__': '<frozen>',
|
check = {'__name__': '__phello__.spam', '__file__': '<frozen>',
|
||||||
'__package__': '__phello__',
|
'__package__': '__phello__',
|
||||||
|
@ -38,12 +41,15 @@ class LoaderTests(abc.LoaderTests):
|
||||||
self.assertEqual(attr_value, value,
|
self.assertEqual(attr_value, value,
|
||||||
"for __phello__.spam.%s, %r != %r" %
|
"for __phello__.spam.%s, %r != %r" %
|
||||||
(attr, attr_value, value))
|
(attr, attr_value, value))
|
||||||
|
self.assertEqual(stdout.getvalue(), 'Hello world!\n')
|
||||||
|
|
||||||
def test_module_reuse(self):
|
def test_module_reuse(self):
|
||||||
with util.uncache('__hello__'):
|
with util.uncache('__hello__'), captured_stdout() as stdout:
|
||||||
module1 = machinery.FrozenImporter.load_module('__hello__')
|
module1 = machinery.FrozenImporter.load_module('__hello__')
|
||||||
module2 = machinery.FrozenImporter.load_module('__hello__')
|
module2 = machinery.FrozenImporter.load_module('__hello__')
|
||||||
self.assertTrue(module1 is module2)
|
self.assertTrue(module1 is module2)
|
||||||
|
self.assertEqual(stdout.getvalue(),
|
||||||
|
'Hello world!\nHello world!\n')
|
||||||
|
|
||||||
def test_state_after_failure(self):
|
def test_state_after_failure(self):
|
||||||
# No way to trigger an error in a frozen module.
|
# No way to trigger an error in a frozen module.
|
||||||
|
@ -62,10 +68,12 @@ class InspectLoaderTests(unittest.TestCase):
|
||||||
def test_get_code(self):
|
def test_get_code(self):
|
||||||
# Make sure that the code object is good.
|
# Make sure that the code object is good.
|
||||||
name = '__hello__'
|
name = '__hello__'
|
||||||
|
with captured_stdout() as stdout:
|
||||||
code = machinery.FrozenImporter.get_code(name)
|
code = machinery.FrozenImporter.get_code(name)
|
||||||
mod = imp.new_module(name)
|
mod = imp.new_module(name)
|
||||||
exec(code, mod.__dict__)
|
exec(code, mod.__dict__)
|
||||||
self.assertTrue(hasattr(mod, 'initialized'))
|
self.assertTrue(hasattr(mod, 'initialized'))
|
||||||
|
self.assertEqual(stdout.getvalue(), 'Hello world!\n')
|
||||||
|
|
||||||
def test_get_source(self):
|
def test_get_source(self):
|
||||||
# Should always return None.
|
# Should always return None.
|
||||||
|
|
Loading…
Reference in New Issue