Skip to content

Commit 732ac65

Browse files
committed
Issue python#19721: Consolidate test_importlib utility code into a single
module.
1 parent 91795c8 commit 732ac65

25 files changed

+249
-270
lines changed

Lib/test/test_importlib/builtin/test_finder.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
from .. import abc
22
from .. import util
3-
from . import util as builtin_util
43

54
frozen_machinery, source_machinery = util.import_importlib('importlib.machinery')
65

76
import sys
87
import unittest
98

109

10+
@unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module')
1111
class FindSpecTests(abc.FinderTests):
1212

1313
"""Test find_spec() for built-in modules."""
1414

1515
def test_module(self):
1616
# Common case.
17-
with util.uncache(builtin_util.NAME):
18-
found = self.machinery.BuiltinImporter.find_spec(builtin_util.NAME)
17+
with util.uncache(util.BUILTINS.good_name):
18+
found = self.machinery.BuiltinImporter.find_spec(util.BUILTINS.good_name)
1919
self.assertTrue(found)
2020
self.assertEqual(found.origin, 'built-in')
2121

@@ -39,23 +39,24 @@ def test_failure(self):
3939

4040
def test_ignore_path(self):
4141
# The value for 'path' should always trigger a failed import.
42-
with util.uncache(builtin_util.NAME):
43-
spec = self.machinery.BuiltinImporter.find_spec(builtin_util.NAME,
42+
with util.uncache(util.BUILTINS.good_name):
43+
spec = self.machinery.BuiltinImporter.find_spec(util.BUILTINS.good_name,
4444
['pkg'])
4545
self.assertIsNone(spec)
4646

4747
Frozen_FindSpecTests, Source_FindSpecTests = util.test_both(FindSpecTests,
4848
machinery=[frozen_machinery, source_machinery])
4949

5050

51+
@unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module')
5152
class FinderTests(abc.FinderTests):
5253

5354
"""Test find_module() for built-in modules."""
5455

5556
def test_module(self):
5657
# Common case.
57-
with util.uncache(builtin_util.NAME):
58-
found = self.machinery.BuiltinImporter.find_module(builtin_util.NAME)
58+
with util.uncache(util.BUILTINS.good_name):
59+
found = self.machinery.BuiltinImporter.find_module(util.BUILTINS.good_name)
5960
self.assertTrue(found)
6061
self.assertTrue(hasattr(found, 'load_module'))
6162

@@ -72,8 +73,8 @@ def test_failure(self):
7273

7374
def test_ignore_path(self):
7475
# The value for 'path' should always trigger a failed import.
75-
with util.uncache(builtin_util.NAME):
76-
loader = self.machinery.BuiltinImporter.find_module(builtin_util.NAME,
76+
with util.uncache(util.BUILTINS.good_name):
77+
loader = self.machinery.BuiltinImporter.find_module(util.BUILTINS.good_name,
7778
['pkg'])
7879
self.assertIsNone(loader)
7980

Lib/test/test_importlib/builtin/test_loader.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
from .. import abc
22
from .. import util
3-
from . import util as builtin_util
43

54
frozen_machinery, source_machinery = util.import_importlib('importlib.machinery')
65

76
import sys
87
import types
98
import unittest
109

11-
10+
@unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module')
1211
class LoaderTests(abc.LoaderTests):
1312

1413
"""Test load_module() for built-in modules."""
@@ -29,8 +28,8 @@ def load_module(self, name):
2928

3029
def test_module(self):
3130
# Common case.
32-
with util.uncache(builtin_util.NAME):
33-
module = self.load_module(builtin_util.NAME)
31+
with util.uncache(util.BUILTINS.good_name):
32+
module = self.load_module(util.BUILTINS.good_name)
3433
self.verify(module)
3534

3635
# Built-in modules cannot be a package.
@@ -41,9 +40,9 @@ def test_module(self):
4140

4241
def test_module_reuse(self):
4342
# Test that the same module is used in a reload.
44-
with util.uncache(builtin_util.NAME):
45-
module1 = self.load_module(builtin_util.NAME)
46-
module2 = self.load_module(builtin_util.NAME)
43+
with util.uncache(util.BUILTINS.good_name):
44+
module1 = self.load_module(util.BUILTINS.good_name)
45+
module2 = self.load_module(util.BUILTINS.good_name)
4746
self.assertIs(module1, module2)
4847

4948
def test_unloadable(self):
@@ -70,32 +69,34 @@ def test_already_imported(self):
7069
machinery=[frozen_machinery, source_machinery])
7170

7271

72+
@unittest.skipIf(util.BUILTINS.good_name is None, 'no reasonable builtin module')
7373
class InspectLoaderTests:
7474

7575
"""Tests for InspectLoader methods for BuiltinImporter."""
7676

7777
def test_get_code(self):
7878
# There is no code object.
79-
result = self.machinery.BuiltinImporter.get_code(builtin_util.NAME)
79+
result = self.machinery.BuiltinImporter.get_code(util.BUILTINS.good_name)
8080
self.assertIsNone(result)
8181

8282
def test_get_source(self):
8383
# There is no source.
84-
result = self.machinery.BuiltinImporter.get_source(builtin_util.NAME)
84+
result = self.machinery.BuiltinImporter.get_source(util.BUILTINS.good_name)
8585
self.assertIsNone(result)
8686

8787
def test_is_package(self):
8888
# Cannot be a package.
89-
result = self.machinery.BuiltinImporter.is_package(builtin_util.NAME)
89+
result = self.machinery.BuiltinImporter.is_package(util.BUILTINS.good_name)
9090
self.assertTrue(not result)
9191

92+
@unittest.skipIf(util.BUILTINS.bad_name is None, 'all modules are built in')
9293
def test_not_builtin(self):
9394
# Modules not built-in should raise ImportError.
9495
for meth_name in ('get_code', 'get_source', 'is_package'):
9596
method = getattr(self.machinery.BuiltinImporter, meth_name)
9697
with self.assertRaises(ImportError) as cm:
97-
method(builtin_util.BAD_NAME)
98-
self.assertRaises(builtin_util.BAD_NAME)
98+
method(util.BUILTINS.bad_name)
99+
self.assertRaises(util.BUILTINS.bad_name)
99100

100101
Frozen_InspectLoaderTests, Source_InspectLoaderTests = util.test_both(
101102
InspectLoaderTests,

Lib/test/test_importlib/builtin/util.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

Lib/test/test_importlib/extension/test_case_sensitivity.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,21 @@
44
import unittest
55

66
from .. import util
7-
from . import util as ext_util
87

98
frozen_machinery, source_machinery = util.import_importlib('importlib.machinery')
109

1110

1211
# XXX find_spec tests
1312

14-
@unittest.skipIf(ext_util.FILENAME is None, '_testcapi not available')
13+
@unittest.skipIf(util.EXTENSIONS.filename is None, '_testcapi not available')
1514
@util.case_insensitive_tests
1615
class ExtensionModuleCaseSensitivityTest:
1716

1817
def find_module(self):
19-
good_name = ext_util.NAME
18+
good_name = util.EXTENSIONS.name
2019
bad_name = good_name.upper()
2120
assert good_name != bad_name
22-
finder = self.machinery.FileFinder(ext_util.PATH,
21+
finder = self.machinery.FileFinder(util.EXTENSIONS.path,
2322
(self.machinery.ExtensionFileLoader,
2423
self.machinery.EXTENSION_SUFFIXES))
2524
return finder.find_module(bad_name)

Lib/test/test_importlib/extension/test_finder.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from .. import abc
2-
from .. import util as test_util
3-
from . import util
2+
from .. import util
43

5-
machinery = test_util.import_importlib('importlib.machinery')
4+
machinery = util.import_importlib('importlib.machinery')
65

76
import unittest
87
import warnings
@@ -14,15 +13,15 @@ class FinderTests(abc.FinderTests):
1413
"""Test the finder for extension modules."""
1514

1615
def find_module(self, fullname):
17-
importer = self.machinery.FileFinder(util.PATH,
16+
importer = self.machinery.FileFinder(util.EXTENSIONS.path,
1817
(self.machinery.ExtensionFileLoader,
1918
self.machinery.EXTENSION_SUFFIXES))
2019
with warnings.catch_warnings():
2120
warnings.simplefilter('ignore', DeprecationWarning)
2221
return importer.find_module(fullname)
2322

2423
def test_module(self):
25-
self.assertTrue(self.find_module(util.NAME))
24+
self.assertTrue(self.find_module(util.EXTENSIONS.name))
2625

2726
# No extension module as an __init__ available for testing.
2827
test_package = test_package_in_package = None
@@ -36,7 +35,7 @@ def test_module(self):
3635
def test_failure(self):
3736
self.assertIsNone(self.find_module('asdfjkl;'))
3837

39-
Frozen_FinderTests, Source_FinderTests = test_util.test_both(
38+
Frozen_FinderTests, Source_FinderTests = util.test_both(
4039
FinderTests, machinery=machinery)
4140

4241

Lib/test/test_importlib/extension/test_loader.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from . import util as ext_util
21
from .. import abc
32
from .. import util
43

@@ -15,8 +14,8 @@ class LoaderTests(abc.LoaderTests):
1514
"""Test load_module() for extension modules."""
1615

1716
def setUp(self):
18-
self.loader = self.machinery.ExtensionFileLoader(ext_util.NAME,
19-
ext_util.FILEPATH)
17+
self.loader = self.machinery.ExtensionFileLoader(util.EXTENSIONS.name,
18+
util.EXTENSIONS.file_path)
2019

2120
def load_module(self, fullname):
2221
return self.loader.load_module(fullname)
@@ -29,23 +28,23 @@ def test_load_module_API(self):
2928
self.load_module('XXX')
3029

3130
def test_equality(self):
32-
other = self.machinery.ExtensionFileLoader(ext_util.NAME,
33-
ext_util.FILEPATH)
31+
other = self.machinery.ExtensionFileLoader(util.EXTENSIONS.name,
32+
util.EXTENSIONS.file_path)
3433
self.assertEqual(self.loader, other)
3534

3635
def test_inequality(self):
37-
other = self.machinery.ExtensionFileLoader('_' + ext_util.NAME,
38-
ext_util.FILEPATH)
36+
other = self.machinery.ExtensionFileLoader('_' + util.EXTENSIONS.name,
37+
util.EXTENSIONS.file_path)
3938
self.assertNotEqual(self.loader, other)
4039

4140
def test_module(self):
42-
with util.uncache(ext_util.NAME):
43-
module = self.load_module(ext_util.NAME)
44-
for attr, value in [('__name__', ext_util.NAME),
45-
('__file__', ext_util.FILEPATH),
41+
with util.uncache(util.EXTENSIONS.name):
42+
module = self.load_module(util.EXTENSIONS.name)
43+
for attr, value in [('__name__', util.EXTENSIONS.name),
44+
('__file__', util.EXTENSIONS.file_path),
4645
('__package__', '')]:
4746
self.assertEqual(getattr(module, attr), value)
48-
self.assertIn(ext_util.NAME, sys.modules)
47+
self.assertIn(util.EXTENSIONS.name, sys.modules)
4948
self.assertIsInstance(module.__loader__,
5049
self.machinery.ExtensionFileLoader)
5150

@@ -56,9 +55,9 @@ def test_module(self):
5655
test_lacking_parent = None
5756

5857
def test_module_reuse(self):
59-
with util.uncache(ext_util.NAME):
60-
module1 = self.load_module(ext_util.NAME)
61-
module2 = self.load_module(ext_util.NAME)
58+
with util.uncache(util.EXTENSIONS.name):
59+
module1 = self.load_module(util.EXTENSIONS.name)
60+
module2 = self.load_module(util.EXTENSIONS.name)
6261
self.assertIs(module1, module2)
6362

6463
# No easy way to trigger a failure after a successful import.
@@ -71,7 +70,7 @@ def test_unloadable(self):
7170
self.assertEqual(cm.exception.name, name)
7271

7372
def test_is_package(self):
74-
self.assertFalse(self.loader.is_package(ext_util.NAME))
73+
self.assertFalse(self.loader.is_package(util.EXTENSIONS.name))
7574
for suffix in self.machinery.EXTENSION_SUFFIXES:
7675
path = os.path.join('some', 'path', 'pkg', '__init__' + suffix)
7776
loader = self.machinery.ExtensionFileLoader('pkg', path)

Lib/test/test_importlib/extension/test_path_hook.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
from .. import util as test_util
2-
from . import util
1+
from .. import util
32

4-
machinery = test_util.import_importlib('importlib.machinery')
3+
machinery = util.import_importlib('importlib.machinery')
54

65
import collections
76
import sys
@@ -22,9 +21,9 @@ def hook(self, entry):
2221
def test_success(self):
2322
# Path hook should handle a directory where a known extension module
2423
# exists.
25-
self.assertTrue(hasattr(self.hook(util.PATH), 'find_module'))
24+
self.assertTrue(hasattr(self.hook(util.EXTENSIONS.path), 'find_module'))
2625

27-
Frozen_PathHooksTests, Source_PathHooksTests = test_util.test_both(
26+
Frozen_PathHooksTests, Source_PathHooksTests = util.test_both(
2827
PathHookTests, machinery=machinery)
2928

3029

Lib/test/test_importlib/extension/util.py

Lines changed: 0 additions & 19 deletions
This file was deleted.

Lib/test/test_importlib/import_/test___loader__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import unittest
55

66
from .. import util
7-
from . import util as import_util
87

98

109
class SpecLoaderMock:
@@ -25,7 +24,7 @@ def test___loader__(self):
2524
self.assertEqual(loader, module.__loader__)
2625

2726
Frozen_SpecTests, Source_SpecTests = util.test_both(
28-
SpecLoaderAttributeTests, __import__=import_util.__import__)
27+
SpecLoaderAttributeTests, __import__=util.__import__)
2928

3029

3130
class LoaderMock:
@@ -63,7 +62,7 @@ def test___loader___is_None(self):
6362

6463

6564
Frozen_Tests, Source_Tests = util.test_both(LoaderAttributeTests,
66-
__import__=import_util.__import__)
65+
__import__=util.__import__)
6766

6867

6968
if __name__ == '__main__':

Lib/test/test_importlib/import_/test___package__.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
"""
77
import unittest
88
from .. import util
9-
from . import util as import_util
109

1110

1211
class Using__package__:
@@ -74,13 +73,13 @@ class Using__package__PEP302(Using__package__):
7473
mock_modules = util.mock_modules
7574

7675
Frozen_UsingPackagePEP302, Source_UsingPackagePEP302 = util.test_both(
77-
Using__package__PEP302, __import__=import_util.__import__)
76+
Using__package__PEP302, __import__=util.__import__)
7877

7978
class Using__package__PEP302(Using__package__):
8079
mock_modules = util.mock_spec
8180

8281
Frozen_UsingPackagePEP451, Source_UsingPackagePEP451 = util.test_both(
83-
Using__package__PEP302, __import__=import_util.__import__)
82+
Using__package__PEP302, __import__=util.__import__)
8483

8584

8685
class Setting__package__:
@@ -95,7 +94,7 @@ class Setting__package__:
9594
9695
"""
9796

98-
__import__ = import_util.__import__[1]
97+
__import__ = util.__import__[1]
9998

10099
# [top-level]
101100
def test_top_level(self):

0 commit comments

Comments
 (0)