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

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

#countcontent
1n/aimport importlib
2n/afrom importlib import machinery
3n/afrom .. import abc
4n/afrom .. import util
5n/afrom . import util as builtin_util
6n/a
7n/aimport sys
8n/aimport types
9n/aimport unittest
10n/a
11n/a
12n/aclass LoaderTests(abc.LoaderTests):
13n/a
14n/a """Test load_module() for built-in modules."""
15n/a
16n/a verification = {'__name__': 'errno', '__package__': '',
17n/a '__loader__': machinery.BuiltinImporter}
18n/a
19n/a def verify(self, module):
20n/a """Verify that the module matches against what it should have."""
21n/a self.assertIsInstance(module, types.ModuleType)
22n/a for attr, value in self.verification.items():
23n/a self.assertEqual(getattr(module, attr), value)
24n/a self.assertIn(module.__name__, sys.modules)
25n/a
26n/a load_module = staticmethod(lambda name:
27n/a machinery.BuiltinImporter.load_module(name))
28n/a
29n/a def test_module(self):
30n/a # Common case.
31n/a with util.uncache(builtin_util.NAME):
32n/a module = self.load_module(builtin_util.NAME)
33n/a self.verify(module)
34n/a
35n/a def test_package(self):
36n/a # Built-in modules cannot be a package.
37n/a pass
38n/a
39n/a def test_lacking_parent(self):
40n/a # Built-in modules cannot be a package.
41n/a pass
42n/a
43n/a def test_state_after_failure(self):
44n/a # Not way to force an imoprt failure.
45n/a pass
46n/a
47n/a def test_module_reuse(self):
48n/a # Test that the same module is used in a reload.
49n/a with util.uncache(builtin_util.NAME):
50n/a module1 = self.load_module(builtin_util.NAME)
51n/a module2 = self.load_module(builtin_util.NAME)
52n/a self.assertIs(module1, module2)
53n/a
54n/a def test_unloadable(self):
55n/a name = 'dssdsdfff'
56n/a assert name not in sys.builtin_module_names
57n/a with self.assertRaises(ImportError) as cm:
58n/a self.load_module(name)
59n/a self.assertEqual(cm.exception.name, name)
60n/a
61n/a def test_already_imported(self):
62n/a # Using the name of a module already imported but not a built-in should
63n/a # still fail.
64n/a assert hasattr(importlib, '__file__') # Not a built-in.
65n/a with self.assertRaises(ImportError) as cm:
66n/a self.load_module('importlib')
67n/a self.assertEqual(cm.exception.name, 'importlib')
68n/a
69n/a
70n/aclass InspectLoaderTests(unittest.TestCase):
71n/a
72n/a """Tests for InspectLoader methods for BuiltinImporter."""
73n/a
74n/a def test_get_code(self):
75n/a # There is no code object.
76n/a result = machinery.BuiltinImporter.get_code(builtin_util.NAME)
77n/a self.assertIsNone(result)
78n/a
79n/a def test_get_source(self):
80n/a # There is no source.
81n/a result = machinery.BuiltinImporter.get_source(builtin_util.NAME)
82n/a self.assertIsNone(result)
83n/a
84n/a def test_is_package(self):
85n/a # Cannot be a package.
86n/a result = machinery.BuiltinImporter.is_package(builtin_util.NAME)
87n/a self.assertTrue(not result)
88n/a
89n/a def test_not_builtin(self):
90n/a # Modules not built-in should raise ImportError.
91n/a for meth_name in ('get_code', 'get_source', 'is_package'):
92n/a method = getattr(machinery.BuiltinImporter, meth_name)
93n/a with self.assertRaises(ImportError) as cm:
94n/a method(builtin_util.BAD_NAME)
95n/a self.assertRaises(builtin_util.BAD_NAME)
96n/a
97n/a
98n/a
99n/adef test_main():
100n/a from test.support import run_unittest
101n/a run_unittest(LoaderTests, InspectLoaderTests)
102n/a
103n/a
104n/aif __name__ == '__main__':
105n/a test_main()