ยปCore Development>Code coverage>Lib/importlib/test/frozen/test_loader.py

Python code coverage for Lib/importlib/test/frozen/test_loader.py

#countcontent
1n/afrom importlib import machinery
2n/aimport imp
3n/aimport unittest
4n/afrom .. import abc
5n/afrom .. import util
6n/afrom test.support import captured_stdout
7n/a
8n/aclass LoaderTests(abc.LoaderTests):
9n/a
10n/a def test_module(self):
11n/a with util.uncache('__hello__'), captured_stdout() as stdout:
12n/a module = machinery.FrozenImporter.load_module('__hello__')
13n/a check = {'__name__': '__hello__',
14n/a '__package__': '',
15n/a '__loader__': machinery.FrozenImporter,
16n/a }
17n/a for attr, value in check.items():
18n/a self.assertEqual(getattr(module, attr), value)
19n/a self.assertEqual(stdout.getvalue(), 'Hello world!\n')
20n/a self.assertFalse(hasattr(module, '__file__'))
21n/a
22n/a def test_package(self):
23n/a with util.uncache('__phello__'), captured_stdout() as stdout:
24n/a module = machinery.FrozenImporter.load_module('__phello__')
25n/a check = {'__name__': '__phello__',
26n/a '__package__': '__phello__',
27n/a '__path__': ['__phello__'],
28n/a '__loader__': machinery.FrozenImporter,
29n/a }
30n/a for attr, value in check.items():
31n/a attr_value = getattr(module, attr)
32n/a self.assertEqual(attr_value, value,
33n/a "for __phello__.%s, %r != %r" %
34n/a (attr, attr_value, value))
35n/a self.assertEqual(stdout.getvalue(), 'Hello world!\n')
36n/a self.assertFalse(hasattr(module, '__file__'))
37n/a
38n/a def test_lacking_parent(self):
39n/a with util.uncache('__phello__', '__phello__.spam'), \
40n/a captured_stdout() as stdout:
41n/a module = machinery.FrozenImporter.load_module('__phello__.spam')
42n/a check = {'__name__': '__phello__.spam',
43n/a '__package__': '__phello__',
44n/a '__loader__': machinery.FrozenImporter,
45n/a }
46n/a for attr, value in check.items():
47n/a attr_value = getattr(module, attr)
48n/a self.assertEqual(attr_value, value,
49n/a "for __phello__.spam.%s, %r != %r" %
50n/a (attr, attr_value, value))
51n/a self.assertEqual(stdout.getvalue(), 'Hello world!\n')
52n/a self.assertFalse(hasattr(module, '__file__'))
53n/a
54n/a def test_module_reuse(self):
55n/a with util.uncache('__hello__'), captured_stdout() as stdout:
56n/a module1 = machinery.FrozenImporter.load_module('__hello__')
57n/a module2 = machinery.FrozenImporter.load_module('__hello__')
58n/a self.assertIs(module1, module2)
59n/a self.assertEqual(stdout.getvalue(),
60n/a 'Hello world!\nHello world!\n')
61n/a
62n/a def test_module_repr(self):
63n/a with util.uncache('__hello__'), captured_stdout():
64n/a module = machinery.FrozenImporter.load_module('__hello__')
65n/a self.assertEqual(repr(module),
66n/a "<module '__hello__' (frozen)>")
67n/a
68n/a def test_state_after_failure(self):
69n/a # No way to trigger an error in a frozen module.
70n/a pass
71n/a
72n/a def test_unloadable(self):
73n/a assert machinery.FrozenImporter.find_module('_not_real') is None
74n/a with self.assertRaises(ImportError) as cm:
75n/a machinery.FrozenImporter.load_module('_not_real')
76n/a self.assertEqual(cm.exception.name, '_not_real')
77n/a
78n/a
79n/aclass InspectLoaderTests(unittest.TestCase):
80n/a
81n/a """Tests for the InspectLoader methods for FrozenImporter."""
82n/a
83n/a def test_get_code(self):
84n/a # Make sure that the code object is good.
85n/a name = '__hello__'
86n/a with captured_stdout() as stdout:
87n/a code = machinery.FrozenImporter.get_code(name)
88n/a mod = imp.new_module(name)
89n/a exec(code, mod.__dict__)
90n/a self.assertTrue(hasattr(mod, 'initialized'))
91n/a self.assertEqual(stdout.getvalue(), 'Hello world!\n')
92n/a
93n/a def test_get_source(self):
94n/a # Should always return None.
95n/a result = machinery.FrozenImporter.get_source('__hello__')
96n/a self.assertIsNone(result)
97n/a
98n/a def test_is_package(self):
99n/a # Should be able to tell what is a package.
100n/a test_for = (('__hello__', False), ('__phello__', True),
101n/a ('__phello__.spam', False))
102n/a for name, is_package in test_for:
103n/a result = machinery.FrozenImporter.is_package(name)
104n/a self.assertEqual(bool(result), is_package)
105n/a
106n/a def test_failure(self):
107n/a # Raise ImportError for modules that are not frozen.
108n/a for meth_name in ('get_code', 'get_source', 'is_package'):
109n/a method = getattr(machinery.FrozenImporter, meth_name)
110n/a with self.assertRaises(ImportError) as cm:
111n/a method('importlib')
112n/a self.assertEqual(cm.exception.name, 'importlib')
113n/a
114n/a
115n/adef test_main():
116n/a from test.support import run_unittest
117n/a run_unittest(LoaderTests, InspectLoaderTests)
118n/a
119n/a
120n/aif __name__ == '__main__':
121n/a test_main()