mirror of
https://github.com/python/cpython
synced 2024-09-15 23:26:29 +00:00
gh-116307: Proper fix for 'mod' leaking across importlib tests (#116680)
gh-116307: Create a new import helper 'isolated modules' and use that instead of 'Clean Import' to ensure that tests from importlib_resources don't leave modules in sys.modules.
This commit is contained in:
parent
bb66600558
commit
a254807761
|
@ -268,6 +268,18 @@ def modules_cleanup(oldmodules):
|
|||
sys.modules.update(oldmodules)
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def isolated_modules():
|
||||
"""
|
||||
Save modules on entry and cleanup on exit.
|
||||
"""
|
||||
(saved,) = modules_setup()
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
modules_cleanup(saved)
|
||||
|
||||
|
||||
def mock_register_at_fork(func):
|
||||
# bpo-30599: Mock os.register_at_fork() when importing the random module,
|
||||
# since this function doesn't allow to unregister callbacks and would leak
|
||||
|
|
|
@ -70,7 +70,7 @@ def setUp(self):
|
|||
self.addCleanup(self.fixtures.close)
|
||||
self.site_dir = self.fixtures.enter_context(os_helper.temp_dir())
|
||||
self.fixtures.enter_context(import_helper.DirsOnSysPath(self.site_dir))
|
||||
self.fixtures.enter_context(import_helper.CleanImport())
|
||||
self.fixtures.enter_context(import_helper.isolated_modules())
|
||||
|
||||
|
||||
class ModulesFilesTests(SiteDir, unittest.TestCase):
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Added import helper ``isolated_modules`` as ``CleanImport`` does not remove
|
||||
modules imported during the context. Use it in importlib.resources tests to
|
||||
avoid leaving ``mod`` around to impede importlib.metadata tests.
|
Loading…
Reference in a new issue