|
10 | 10 | import warnings |
11 | 11 | import importlib.util |
12 | 12 | import importlib |
13 | | -from test.support import MISSING_C_DOCSTRINGS |
| 13 | +from test import support |
| 14 | +from test.support import MISSING_C_DOCSTRINGS, script_helper |
14 | 15 |
|
15 | 16 |
|
16 | 17 | class LoaderTests: |
@@ -325,29 +326,6 @@ def test_unloadable_nonascii(self): |
325 | 326 | self.load_module_by_name(name) |
326 | 327 | self.assertEqual(cm.exception.name, name) |
327 | 328 |
|
328 | | - def test_nonmodule(self): |
329 | | - # Test returning a non-module object from create works. |
330 | | - name = self.name + '_nonmodule' |
331 | | - mod = self.load_module_by_name(name) |
332 | | - self.assertNotEqual(type(mod), type(unittest)) |
333 | | - self.assertEqual(mod.three, 3) |
334 | | - |
335 | | - # issue 27782 |
336 | | - def test_nonmodule_with_methods(self): |
337 | | - # Test creating a non-module object with methods defined. |
338 | | - name = self.name + '_nonmodule_with_methods' |
339 | | - mod = self.load_module_by_name(name) |
340 | | - self.assertNotEqual(type(mod), type(unittest)) |
341 | | - self.assertEqual(mod.three, 3) |
342 | | - self.assertEqual(mod.bar(10, 1), 9) |
343 | | - |
344 | | - def test_null_slots(self): |
345 | | - # Test that NULL slots aren't a problem. |
346 | | - name = self.name + '_null_slots' |
347 | | - module = self.load_module_by_name(name) |
348 | | - self.assertIsInstance(module, types.ModuleType) |
349 | | - self.assertEqual(module.__name__, name) |
350 | | - |
351 | 329 | def test_bad_modules(self): |
352 | 330 | # Test SystemError is raised for misbehaving extensions. |
353 | 331 | for name_base in [ |
@@ -401,5 +379,14 @@ def test_nonascii(self): |
401 | 379 | ) = util.test_both(MultiPhaseExtensionModuleTests, machinery=machinery) |
402 | 380 |
|
403 | 381 |
|
| 382 | +class NonModuleExtensionTests(unittest.TestCase): |
| 383 | + def test_nonmodule_cases(self): |
| 384 | + # The test cases in this file cause the GIL to be enabled permanently |
| 385 | + # in free-threaded builds, so they are run in a subprocess to isolate |
| 386 | + # this effect. |
| 387 | + script = support.findfile("test_importlib/extension/_test_nonmodule_cases.py") |
| 388 | + script_helper.run_test_script(script) |
| 389 | + |
| 390 | + |
404 | 391 | if __name__ == '__main__': |
405 | 392 | unittest.main() |
0 commit comments