Skip to content

Commit e38b054

Browse files
committed
Issue #16803: Move test.test_importlib.extension to use both frozen and source importlib code
1 parent 6a4cbc0 commit e38b054

File tree

4 files changed

+44
-44
lines changed

4 files changed

+44
-44
lines changed
Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1+
from importlib import _bootstrap
12
import sys
23
from test import support
34
import unittest
45

5-
from importlib import _bootstrap
6-
from importlib import machinery
76
from .. import util
87
from . import util as ext_util
98

9+
frozen_machinery, source_machinery = util.import_importlib('importlib.machinery')
10+
1011

12+
@unittest.skipIf(ext_util.FILENAME is None, '_testcapi not available')
1113
@util.case_insensitive_tests
12-
class ExtensionModuleCaseSensitivityTest(unittest.TestCase):
14+
class ExtensionModuleCaseSensitivityTest:
1315

1416
def find_module(self):
1517
good_name = ext_util.NAME
1618
bad_name = good_name.upper()
1719
assert good_name != bad_name
18-
finder = machinery.FileFinder(ext_util.PATH,
19-
(machinery.ExtensionFileLoader,
20-
machinery.EXTENSION_SUFFIXES))
20+
finder = self.machinery.FileFinder(ext_util.PATH,
21+
(self.machinery.ExtensionFileLoader,
22+
self.machinery.EXTENSION_SUFFIXES))
2123
return finder.find_module(bad_name)
2224

2325
def test_case_sensitive(self):
@@ -38,14 +40,10 @@ def test_case_insensitivity(self):
3840
loader = self.find_module()
3941
self.assertTrue(hasattr(loader, 'load_module'))
4042

41-
42-
43-
44-
def test_main():
45-
if ext_util.FILENAME is None:
46-
return
47-
support.run_unittest(ExtensionModuleCaseSensitivityTest)
43+
Frozen_ExtensionCaseSensitivity, Source_ExtensionCaseSensitivity = util.test_both(
44+
ExtensionModuleCaseSensitivityTest,
45+
machinery=[frozen_machinery, source_machinery])
4846

4947

5048
if __name__ == '__main__':
51-
test_main()
49+
unittest.main()

Lib/test/test_importlib/extension/test_finder.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
from importlib import machinery
21
from .. import abc
2+
from .. import util as test_util
33
from . import util
44

5+
machinery = test_util.import_importlib('importlib.machinery')
6+
57
import unittest
68

7-
class FinderTests(unittest.TestCase, abc.FinderTests):
9+
10+
class FinderTests(abc.FinderTests):
811

912
"""Test the finder for extension modules."""
1013

1114
def find_module(self, fullname):
12-
importer = machinery.FileFinder(util.PATH,
13-
(machinery.ExtensionFileLoader,
14-
machinery.EXTENSION_SUFFIXES))
15+
importer = self.machinery.FileFinder(util.PATH,
16+
(self.machinery.ExtensionFileLoader,
17+
self.machinery.EXTENSION_SUFFIXES))
1518
return importer.find_module(fullname)
1619

1720
def test_module(self):
@@ -36,11 +39,9 @@ def test_package_over_module(self):
3639
def test_failure(self):
3740
self.assertIsNone(self.find_module('asdfjkl;'))
3841

39-
40-
def test_main():
41-
from test.support import run_unittest
42-
run_unittest(FinderTests)
42+
Frozen_FinderTests, Source_FinderTests = test_util.test_both(
43+
FinderTests, machinery=machinery)
4344

4445

4546
if __name__ == '__main__':
46-
test_main()
47+
unittest.main()

Lib/test/test_importlib/extension/test_loader.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
from importlib import machinery
21
from . import util as ext_util
32
from .. import abc
43
from .. import util
54

5+
machinery = util.import_importlib('importlib.machinery')
6+
67
import os.path
78
import sys
89
import unittest
910

1011

11-
class LoaderTests(unittest.TestCase, abc.LoaderTests):
12+
class LoaderTests(abc.LoaderTests):
1213

1314
"""Test load_module() for extension modules."""
1415

1516
def setUp(self):
16-
self.loader = machinery.ExtensionFileLoader(ext_util.NAME,
17-
ext_util.FILEPATH)
17+
self.loader = self.machinery.ExtensionFileLoader(ext_util.NAME,
18+
ext_util.FILEPATH)
1819

1920
def load_module(self, fullname):
2021
return self.loader.load_module(fullname)
@@ -36,7 +37,7 @@ def test_module(self):
3637
self.assertEqual(getattr(module, attr), value)
3738
self.assertIn(ext_util.NAME, sys.modules)
3839
self.assertIsInstance(module.__loader__,
39-
machinery.ExtensionFileLoader)
40+
self.machinery.ExtensionFileLoader)
4041

4142
def test_package(self):
4243
# No extension module as __init__ available for testing.
@@ -64,16 +65,15 @@ def test_unloadable(self):
6465

6566
def test_is_package(self):
6667
self.assertFalse(self.loader.is_package(ext_util.NAME))
67-
for suffix in machinery.EXTENSION_SUFFIXES:
68+
for suffix in self.machinery.EXTENSION_SUFFIXES:
6869
path = os.path.join('some', 'path', 'pkg', '__init__' + suffix)
69-
loader = machinery.ExtensionFileLoader('pkg', path)
70+
loader = self.machinery.ExtensionFileLoader('pkg', path)
7071
self.assertTrue(loader.is_package('pkg'))
7172

73+
Frozen_LoaderTests, Source_LoaderTests = util.test_both(
74+
LoaderTests, machinery=machinery)
7275

73-
def test_main():
74-
from test.support import run_unittest
75-
run_unittest(LoaderTests)
7676

7777

7878
if __name__ == '__main__':
79-
test_main()
79+
unittest.main()
Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
1-
from importlib import machinery
1+
from .. import util as test_util
22
from . import util
33

4+
machinery = test_util.import_importlib('importlib.machinery')
5+
46
import collections
57
import sys
68
import unittest
79

810

9-
class PathHookTests(unittest.TestCase):
11+
class PathHookTests:
1012

1113
"""Test the path hook for extension modules."""
1214
# XXX Should it only succeed for pre-existing directories?
1315
# XXX Should it only work for directories containing an extension module?
1416

1517
def hook(self, entry):
16-
return machinery.FileFinder.path_hook((machinery.ExtensionFileLoader,
17-
machinery.EXTENSION_SUFFIXES))(entry)
18+
return self.machinery.FileFinder.path_hook(
19+
(self.machinery.ExtensionFileLoader,
20+
self.machinery.EXTENSION_SUFFIXES))(entry)
1821

1922
def test_success(self):
2023
# Path hook should handle a directory where a known extension module
2124
# exists.
2225
self.assertTrue(hasattr(self.hook(util.PATH), 'find_module'))
2326

24-
25-
def test_main():
26-
from test.support import run_unittest
27-
run_unittest(PathHookTests)
27+
Frozen_PathHooksTests, Source_PathHooksTests = test_util.test_both(
28+
PathHookTests, machinery=machinery)
2829

2930

3031
if __name__ == '__main__':
31-
test_main()
32+
unittest.main()

0 commit comments

Comments
 (0)