annotate Lib/test/test_importlib/test_api.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 07229c6104b1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51426
7a1356d2aeef Rewrite the code implementing __import__ for importlib. Now it is much simpler
Brett Cannon <bcannon@gmail.com>
parents: 51236
diff changeset
1 from . import util
84159
5e8b377942f7 Issue #17177: stop using imp in test_importlib
Brett Cannon <brett@python.org>
parents: 84123
diff changeset
2
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
3 frozen_init, source_init = util.import_importlib('importlib')
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
4 frozen_util, source_util = util.import_importlib('importlib.util')
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
5 frozen_machinery, source_machinery = util.import_importlib('importlib.machinery')
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
6
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
7 import os.path
51426
7a1356d2aeef Rewrite the code implementing __import__ for importlib. Now it is much simpler
Brett Cannon <bcannon@gmail.com>
parents: 51236
diff changeset
8 import sys
77945
906c69928049 Issue #15210: Greatly simplify the test for supporting importlib
Brett Cannon <brett@python.org>
parents: 77916
diff changeset
9 from test import support
81882
4a4688b865ff Add a test for fix of issue #17098
Brett Cannon <brett@python.org>
parents: 78485
diff changeset
10 import types
51426
7a1356d2aeef Rewrite the code implementing __import__ for importlib. Now it is much simpler
Brett Cannon <bcannon@gmail.com>
parents: 51236
diff changeset
11 import unittest
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
12
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
13
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
14 class ImportModuleTests:
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
15
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
16 """Test importlib.import_module."""
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
17
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
18 def test_module_import(self):
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
19 # Test importing a top-level module.
51236
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
20 with util.mock_modules('top_level') as mock:
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
21 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
22 module = self.init.import_module('top_level')
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
23 self.assertEqual(module.__name__, 'top_level')
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
24
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
25 def test_absolute_package_import(self):
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
26 # Test importing a module from a package with an absolute name.
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
27 pkg_name = 'pkg'
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
28 pkg_long_name = '{0}.__init__'.format(pkg_name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
29 name = '{0}.mod'.format(pkg_name)
51236
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
30 with util.mock_modules(pkg_long_name, name) as mock:
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
31 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
32 module = self.init.import_module(name)
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
33 self.assertEqual(module.__name__, name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
34
51993
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
35 def test_shallow_relative_package_import(self):
62758
6c3c543ede8c Fix a spelling mistake in a comment.
Brett Cannon <bcannon@gmail.com>
parents: 55737
diff changeset
36 # Test importing a module from a package through a relative import.
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
37 pkg_name = 'pkg'
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
38 pkg_long_name = '{0}.__init__'.format(pkg_name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
39 module_name = 'mod'
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
40 absolute_name = '{0}.{1}'.format(pkg_name, module_name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
41 relative_name = '.{0}'.format(module_name)
51236
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
42 with util.mock_modules(pkg_long_name, absolute_name) as mock:
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
43 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
44 self.init.import_module(pkg_name)
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
45 module = self.init.import_module(relative_name, pkg_name)
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
46 self.assertEqual(module.__name__, absolute_name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
47
51993
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
48 def test_deep_relative_package_import(self):
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
49 modules = ['a.__init__', 'a.b.__init__', 'a.c']
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
50 with util.mock_modules(*modules) as mock:
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
51 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
52 self.init.import_module('a')
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
53 self.init.import_module('a.b')
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
54 module = self.init.import_module('..c', 'a.b')
51993
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
55 self.assertEqual(module.__name__, 'a.c')
ebe10810ebed Add a test for importlib.import_module.
Brett Cannon <bcannon@gmail.com>
parents: 51426
diff changeset
56
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
57 def test_absolute_import_with_package(self):
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
58 # Test importing a module from a package with an absolute name with
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
59 # the 'package' argument given.
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
60 pkg_name = 'pkg'
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
61 pkg_long_name = '{0}.__init__'.format(pkg_name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
62 name = '{0}.mod'.format(pkg_name)
51236
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
63 with util.mock_modules(pkg_long_name, name) as mock:
d85ef26efd10 Rename importlib.test.support to importlib.test.util.
Brett Cannon <bcannon@gmail.com>
parents: 50845
diff changeset
64 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
65 self.init.import_module(pkg_name)
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
66 module = self.init.import_module(name, pkg_name)
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
67 self.assertEqual(module.__name__, name)
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
68
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
69 def test_relative_import_wo_package(self):
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
70 # Relative imports cannot happen without the 'package' argument being
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
71 # set.
55737
b65ebed06eb0 Move over to using assertRaises as a context manager for importlib tests.
Brett Cannon <bcannon@gmail.com>
parents: 51993
diff changeset
72 with self.assertRaises(TypeError):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
73 self.init.import_module('.support')
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
74
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
75
73973
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
76 def test_loaded_once(self):
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
77 # Issue #13591: Modules should only be loaded once when
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
78 # initializing the parent package attempts to import the
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
79 # module currently being imported.
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
80 b_load_count = 0
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
81 def load_a():
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
82 self.init.import_module('a.b')
73973
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
83 def load_b():
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
84 nonlocal b_load_count
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
85 b_load_count += 1
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
86 code = {'a': load_a, 'a.b': load_b}
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
87 modules = ['a.__init__', 'a.b']
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
88 with util.mock_modules(*modules, module_code=code) as mock:
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
89 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
90 self.init.import_module('a.b')
73973
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
91 self.assertEqual(b_load_count, 1)
d2504d30f259 Issue #13591: import_module potentially imports a module twice.
Meador Inge <meadori@gmail.com>
parents: 62758
diff changeset
92
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
93 class Frozen_ImportModuleTests(ImportModuleTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
94 init = frozen_init
75324
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
95
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
96 class Source_ImportModuleTests(ImportModuleTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
97 init = source_init
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
98
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
99
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
100 class FindLoaderTests:
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
101
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
102 class FakeMetaFinder:
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
103 @staticmethod
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
104 def find_module(name, path=None): return name, path
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
105
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
106 def test_sys_modules(self):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
107 # If a module with __loader__ is in sys.modules, then return it.
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
108 name = 'some_mod'
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
109 with util.uncache(name):
84159
5e8b377942f7 Issue #17177: stop using imp in test_importlib
Brett Cannon <brett@python.org>
parents: 84123
diff changeset
110 module = types.ModuleType(name)
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
111 loader = 'a loader!'
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
112 module.__loader__ = loader
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
113 sys.modules[name] = module
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
114 found = self.init.find_loader(name)
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
115 self.assertEqual(loader, found)
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
116
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
117 def test_sys_modules_loader_is_None(self):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
118 # If sys.modules[name].__loader__ is None, raise ValueError.
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
119 name = 'some_mod'
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
120 with util.uncache(name):
84159
5e8b377942f7 Issue #17177: stop using imp in test_importlib
Brett Cannon <brett@python.org>
parents: 84123
diff changeset
121 module = types.ModuleType(name)
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
122 module.__loader__ = None
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
123 sys.modules[name] = module
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
124 with self.assertRaises(ValueError):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
125 self.init.find_loader(name)
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
126
82648
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
127 def test_sys_modules_loader_is_not_set(self):
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
128 # Should raise ValueError
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
129 # Issue #17099
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
130 name = 'some_mod'
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
131 with util.uncache(name):
84159
5e8b377942f7 Issue #17177: stop using imp in test_importlib
Brett Cannon <brett@python.org>
parents: 84123
diff changeset
132 module = types.ModuleType(name)
82648
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
133 try:
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
134 del module.__loader__
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
135 except AttributeError:
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
136 pass
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
137 sys.modules[name] = module
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
138 with self.assertRaises(ValueError):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
139 self.init.find_loader(name)
82648
cee04627bdd0 Issue #17099: Have importlib.find_loader() raise ValueError when
Brett Cannon <brett@python.org>
parents: 81981
diff changeset
140
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
141 def test_success(self):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
142 # Return the loader found on sys.meta_path.
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
143 name = 'some_mod'
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
144 with util.uncache(name):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
145 with util.import_state(meta_path=[self.FakeMetaFinder]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
146 self.assertEqual((name, None), self.init.find_loader(name))
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
147
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
148 def test_success_path(self):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
149 # Searching on a path should work.
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
150 name = 'some_mod'
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
151 path = 'path to some place'
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
152 with util.uncache(name):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
153 with util.import_state(meta_path=[self.FakeMetaFinder]):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
154 self.assertEqual((name, path),
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
155 self.init.find_loader(name, path))
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
156
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
157 def test_nothing(self):
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
158 # None is returned upon failure to find a loader.
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
159 self.assertIsNone(self.init.find_loader('nevergoingtofindthismodule'))
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
160
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
161 class Frozen_FindLoaderTests(FindLoaderTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
162 init = frozen_init
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
163
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
164 class Source_FindLoaderTests(FindLoaderTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
165 init = source_init
76891
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
166
7bf8ac742d2f Issue #13959: Introduce importlib.find_loader().
Brett Cannon <brett@python.org>
parents: 75324
diff changeset
167
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
168 class FindSpecTests:
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
169
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
170 class FakeMetaFinder:
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
171 @staticmethod
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
172 def find_spec(name, path=None, target=None): return name, path, target
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
173
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
174 def test_sys_modules(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
175 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
176 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
177 module = types.ModuleType(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
178 loader = 'a loader!'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
179 spec = self.machinery.ModuleSpec(name, loader)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
180 module.__loader__ = loader
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
181 module.__spec__ = spec
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
182 sys.modules[name] = module
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
183 found = self.init.find_spec(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
184 self.assertEqual(found, spec)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
185
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
186 def test_sys_modules_without___loader__(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
187 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
188 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
189 module = types.ModuleType(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
190 del module.__loader__
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
191 loader = 'a loader!'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
192 spec = self.machinery.ModuleSpec(name, loader)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
193 module.__spec__ = spec
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
194 sys.modules[name] = module
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
195 found = self.init.find_spec(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
196 self.assertEqual(found, spec)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
197
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
198 def test_sys_modules_spec_is_None(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
199 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
200 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
201 module = types.ModuleType(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
202 module.__spec__ = None
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
203 sys.modules[name] = module
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
204 with self.assertRaises(ValueError):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
205 self.init.find_spec(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
206
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
207 def test_sys_modules_loader_is_None(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
208 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
209 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
210 module = types.ModuleType(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
211 spec = self.machinery.ModuleSpec(name, None)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
212 module.__spec__ = spec
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
213 sys.modules[name] = module
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
214 found = self.init.find_spec(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
215 self.assertEqual(found, spec)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
216
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
217 def test_sys_modules_spec_is_not_set(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
218 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
219 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
220 module = types.ModuleType(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
221 try:
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
222 del module.__spec__
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
223 except AttributeError:
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
224 pass
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
225 sys.modules[name] = module
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
226 with self.assertRaises(ValueError):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
227 self.init.find_spec(name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
228
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
229 def test_success(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
230 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
231 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
232 with util.import_state(meta_path=[self.FakeMetaFinder]):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
233 self.assertEqual((name, None, None),
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
234 self.init.find_spec(name))
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
235
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
236 def test_success_path(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
237 # Searching on a path should work.
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
238 name = 'some_mod'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
239 path = 'path to some place'
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
240 with util.uncache(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
241 with util.import_state(meta_path=[self.FakeMetaFinder]):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
242 self.assertEqual((name, path, None),
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
243 self.init.find_spec(name, path))
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
244
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
245 def test_nothing(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
246 # None is returned upon failure to find a loader.
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
247 self.assertIsNone(self.init.find_spec('nevergoingtofindthismodule'))
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
248
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
249 class Frozen_FindSpecTests(FindSpecTests, unittest.TestCase):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
250 init = frozen_init
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
251 machinery = frozen_machinery
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
252
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
253 class Source_FindSpecTests(FindSpecTests, unittest.TestCase):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
254 init = source_init
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
255 machinery = source_machinery
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
256
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
257
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
258 class ReloadTests:
84123
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
259
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
260 """Test module reloading for builtin and extension modules."""
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
261
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
262 def test_reload_modules(self):
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
263 for mod in ('tokenize', 'time', 'marshal'):
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
264 with self.subTest(module=mod):
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
265 with support.CleanImport(mod):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
266 module = self.init.import_module(mod)
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
267 self.init.reload(module)
84123
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
268
85175
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
269 def test_module_replaced(self):
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
270 def code():
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
271 import sys
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
272 module = type(sys)('top_level')
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
273 module.spam = 3
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
274 sys.modules['top_level'] = module
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
275 mock = util.mock_modules('top_level',
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
276 module_code={'top_level': code})
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
277 with mock:
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
278 with util.import_state(meta_path=[mock]):
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
279 module = self.init.import_module('top_level')
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
280 reloaded = self.init.reload(module)
85175
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
281 actual = sys.modules['top_level']
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
282 self.assertEqual(actual.spam, 3)
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
283 self.assertEqual(reloaded.spam, 3)
1af087712e69 Closes issue #18698: ensure importlib.reload() returns the module out of sys.modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 84159
diff changeset
284
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
285 def test_reload_missing_loader(self):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
286 with support.CleanImport('types'):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
287 import types
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
288 loader = types.__loader__
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
289 del types.__loader__
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
290 reloaded = self.init.reload(types)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
291
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
292 self.assertIs(reloaded, types)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
293 self.assertIs(sys.modules['types'], types)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
294 self.assertEqual(reloaded.__loader__.path, loader.path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
295
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
296 def test_reload_loader_replaced(self):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
297 with support.CleanImport('types'):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
298 import types
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
299 types.__loader__ = None
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
300 self.init.invalidate_caches()
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
301 reloaded = self.init.reload(types)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
302
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
303 self.assertIsNot(reloaded.__loader__, None)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
304 self.assertIs(reloaded, types)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
305 self.assertIs(sys.modules['types'], types)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
306
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
307 def test_reload_location_changed(self):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
308 name = 'spam'
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
309 with support.temp_cwd(None) as cwd:
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
310 with util.uncache('spam'):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
311 with support.DirsOnSysPath(cwd):
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
312 # Start as a plain module.
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
313 self.init.invalidate_caches()
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
314 path = os.path.join(cwd, name + '.py')
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
315 cached = self.util.cache_from_source(path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
316 expected = {'__name__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
317 '__package__': '',
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
318 '__file__': path,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
319 '__cached__': cached,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
320 '__doc__': None,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
321 '__builtins__': __builtins__,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
322 }
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
323 support.create_empty_file(path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
324 module = self.init.import_module(name)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
325 ns = vars(module)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
326 loader = ns.pop('__loader__')
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
327 spec = ns.pop('__spec__')
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
328 self.assertEqual(spec.name, name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
329 self.assertEqual(spec.loader, loader)
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
330 self.assertEqual(loader.path, path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
331 self.assertEqual(ns, expected)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
332
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
333 # Change to a package.
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
334 self.init.invalidate_caches()
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
335 init_path = os.path.join(cwd, name, '__init__.py')
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
336 cached = self.util.cache_from_source(init_path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
337 expected = {'__name__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
338 '__package__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
339 '__file__': init_path,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
340 '__cached__': cached,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
341 '__path__': [os.path.dirname(init_path)],
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
342 '__doc__': None,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
343 '__builtins__': __builtins__,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
344 }
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
345 os.mkdir(name)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
346 os.rename(path, init_path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
347 reloaded = self.init.reload(module)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
348 ns = vars(reloaded)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
349 loader = ns.pop('__loader__')
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
350 spec = ns.pop('__spec__')
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
351 self.assertEqual(spec.name, name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
352 self.assertEqual(spec.loader, loader)
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
353 self.assertIs(reloaded, module)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
354 self.assertEqual(loader.path, init_path)
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
355 self.maxDiff = None
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
356 self.assertEqual(ns, expected)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
357
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
358 def test_reload_namespace_changed(self):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
359 name = 'spam'
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
360 with support.temp_cwd(None) as cwd:
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
361 with util.uncache('spam'):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
362 with support.DirsOnSysPath(cwd):
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
363 # Start as a namespace package.
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
364 self.init.invalidate_caches()
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
365 bad_path = os.path.join(cwd, name, '__init.py')
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
366 cached = self.util.cache_from_source(bad_path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
367 expected = {'__name__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
368 '__package__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
369 '__doc__': None,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
370 }
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
371 os.mkdir(name)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
372 with open(bad_path, 'w') as init_file:
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
373 init_file.write('eggs = None')
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
374 module = self.init.import_module(name)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
375 ns = vars(module)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
376 loader = ns.pop('__loader__')
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
377 path = ns.pop('__path__')
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
378 spec = ns.pop('__spec__')
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
379 self.assertEqual(spec.name, name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
380 self.assertIs(spec.loader, None)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
381 self.assertIsNot(loader, None)
86820
78d36d54391c Issue #19413: Disregard duplicate namespace portions during reload tests.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86819
diff changeset
382 self.assertEqual(set(path),
78d36d54391c Issue #19413: Disregard duplicate namespace portions during reload tests.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86819
diff changeset
383 set([os.path.dirname(bad_path)]))
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
384 with self.assertRaises(AttributeError):
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
385 # a NamespaceLoader
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
386 loader.path
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
387 self.assertEqual(ns, expected)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
388
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
389 # Change to a regular package.
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
390 self.init.invalidate_caches()
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
391 init_path = os.path.join(cwd, name, '__init__.py')
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
392 cached = self.util.cache_from_source(init_path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
393 expected = {'__name__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
394 '__package__': name,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
395 '__file__': init_path,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
396 '__cached__': cached,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
397 '__path__': [os.path.dirname(init_path)],
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
398 '__doc__': None,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
399 '__builtins__': __builtins__,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
400 'eggs': None,
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
401 }
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
402 os.rename(bad_path, init_path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
403 reloaded = self.init.reload(module)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
404 ns = vars(reloaded)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
405 loader = ns.pop('__loader__')
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
406 spec = ns.pop('__spec__')
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
407 self.assertEqual(spec.name, name)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
408 self.assertEqual(spec.loader, loader)
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
409 self.assertIs(reloaded, module)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
410 self.assertEqual(loader.path, init_path)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
411 self.assertEqual(ns, expected)
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
412
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
413
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
414 class Frozen_ReloadTests(ReloadTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
415 init = frozen_init
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
416 util = frozen_util
84123
01da7bf11ca1 Issue #18193: Add importlib.reload(), documenting (but not
Brett Cannon <brett@python.org>
parents: 83607
diff changeset
417
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
418 class Source_ReloadTests(ReloadTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
419 init = source_init
86819
88c3a1a3c2ff Issue #19413: Restore pre-3.3 reload() semantics of re-finding modules.
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86433
diff changeset
420 util = source_util
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
421
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
422
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
423 class InvalidateCacheTests:
75324
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
424
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
425 def test_method_called(self):
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
426 # If defined the method should be called.
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
427 class InvalidatingNullFinder:
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
428 def __init__(self, *ignored):
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
429 self.called = False
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
430 def find_module(self, *args):
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
431 return None
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
432 def invalidate_caches(self):
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
433 self.called = True
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
434
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
435 key = 'gobledeegook'
78485
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
436 meta_ins = InvalidatingNullFinder()
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
437 path_ins = InvalidatingNullFinder()
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
438 sys.meta_path.insert(0, meta_ins)
75324
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
439 self.addCleanup(lambda: sys.path_importer_cache.__delitem__(key))
78485
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
440 sys.path_importer_cache[key] = path_ins
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
441 self.addCleanup(lambda: sys.meta_path.remove(meta_ins))
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
442 self.init.invalidate_caches()
78485
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
443 self.assertTrue(meta_ins.called)
0a75ce232f56 Issue #15502: Finish bringing importlib.abc in line with the current
Brett Cannon <brett@python.org>
parents: 78201
diff changeset
444 self.assertTrue(path_ins.called)
75324
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
445
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
446 def test_method_lacking(self):
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
447 # There should be no issues if the method is not defined.
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
448 key = 'gobbledeegook'
84159
5e8b377942f7 Issue #17177: stop using imp in test_importlib
Brett Cannon <brett@python.org>
parents: 84123
diff changeset
449 sys.path_importer_cache[key] = None
75324
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
450 self.addCleanup(lambda: sys.path_importer_cache.__delitem__(key))
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
451 self.init.invalidate_caches() # Shouldn't trigger an exception.
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
452
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
453 class Frozen_InvalidateCacheTests(InvalidateCacheTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
454 init = frozen_init
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
455
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
456 class Source_InvalidateCacheTests(InvalidateCacheTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
457 init = source_init
75324
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
458
de125ee32897 Update importlib.invalidate_caches() to be more general.
Brett Cannon <brett@python.org>
parents: 73973
diff changeset
459
77916
818db871d29a Issue #15210: If _frozen_importlib is not found in sys.modules by
Brett Cannon <brett@python.org>
parents: 76891
diff changeset
460 class FrozenImportlibTests(unittest.TestCase):
818db871d29a Issue #15210: If _frozen_importlib is not found in sys.modules by
Brett Cannon <brett@python.org>
parents: 76891
diff changeset
461
818db871d29a Issue #15210: If _frozen_importlib is not found in sys.modules by
Brett Cannon <brett@python.org>
parents: 76891
diff changeset
462 def test_no_frozen_importlib(self):
818db871d29a Issue #15210: If _frozen_importlib is not found in sys.modules by
Brett Cannon <brett@python.org>
parents: 76891
diff changeset
463 # Should be able to import w/o _frozen_importlib being defined.
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
464 # Can't do an isinstance() check since separate copies of importlib
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
465 # may have been used for import, so just check the name is not for the
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
466 # frozen loader.
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
467 self.assertNotEqual(source_init.__loader__.__class__.__name__,
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
468 'FrozenImporter')
77916
818db871d29a Issue #15210: If _frozen_importlib is not found in sys.modules by
Brett Cannon <brett@python.org>
parents: 76891
diff changeset
469
818db871d29a Issue #15210: If _frozen_importlib is not found in sys.modules by
Brett Cannon <brett@python.org>
parents: 76891
diff changeset
470
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
471 class StartupTests:
81882
4a4688b865ff Add a test for fix of issue #17098
Brett Cannon <brett@python.org>
parents: 78485
diff changeset
472
4a4688b865ff Add a test for fix of issue #17098
Brett Cannon <brett@python.org>
parents: 78485
diff changeset
473 def test_everyone_has___loader__(self):
4a4688b865ff Add a test for fix of issue #17098
Brett Cannon <brett@python.org>
parents: 78485
diff changeset
474 # Issue #17098: all modules should have __loader__ defined.
4a4688b865ff Add a test for fix of issue #17098
Brett Cannon <brett@python.org>
parents: 78485
diff changeset
475 for name, module in sys.modules.items():
4a4688b865ff Add a test for fix of issue #17098
Brett Cannon <brett@python.org>
parents: 78485
diff changeset
476 if isinstance(module, types.ModuleType):
87347
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
477 with self.subTest(name=name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
478 self.assertTrue(hasattr(module, '__loader__'),
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
479 '{!r} lacks a __loader__ attribute'.format(name))
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
480 if self.machinery.BuiltinImporter.find_module(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
481 self.assertIsNot(module.__loader__, None)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
482 elif self.machinery.FrozenImporter.find_module(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
483 self.assertIsNot(module.__loader__, None)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
484
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
485 def test_everyone_has___spec__(self):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
486 for name, module in sys.modules.items():
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
487 if isinstance(module, types.ModuleType):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
488 with self.subTest(name=name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
489 self.assertTrue(hasattr(module, '__spec__'))
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
490 if self.machinery.BuiltinImporter.find_module(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
491 self.assertIsNot(module.__spec__, None)
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
492 elif self.machinery.FrozenImporter.find_module(name):
07229c6104b1 Implement PEP 451 (ModuleSpec).
Eric Snow <ericsnowcurrently@gmail.com>
parents: 86820
diff changeset
493 self.assertIsNot(module.__spec__, None)
86433
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
494
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
495 class Frozen_StartupTests(StartupTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
496 machinery = frozen_machinery
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
497
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
498 class Source_StartupTests(StartupTests, unittest.TestCase):
9d96a3163dbf Issue #16803: test.test_importlib.test_api now runs under frozen and
Brett Cannon <brett@python.org>
parents: 85175
diff changeset
499 machinery = source_machinery
50845
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
500
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
501
aac51b70c74c Add initial implementation of importlib. See the NOTES files for what is
Brett Cannon <bcannon@gmail.com>
parents:
diff changeset
502 if __name__ == '__main__':
81883
370882f297a4 merge with 3.3
Brett Cannon <brett@python.org>
parents: 81882
diff changeset
503 unittest.main()