Skip to content

Commit

Permalink
[3.11] pythongh-116307: Proper fix for 'mod' leaking across importlib…
Browse files Browse the repository at this point in the history
… tests (pythonGH-116680)

(cherry picked from commit a254807)

Co-authored-by: Jason R. Coombs <[email protected]>
pythongh-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.
  • Loading branch information
jaraco committed Mar 13, 2024
1 parent 0917338 commit ee532fb
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 0 deletions.
20 changes: 20 additions & 0 deletions Lib/test/support/import_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,26 @@ 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
# memory.
from unittest import mock
return mock.patch('os.register_at_fork', create=True)(func)


@contextlib.contextmanager
def ready_to_import(name=None, source=""):
from test.support import script_helper
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Added import helper ``isolated_modules`` as ``CleanImport`` does not remove
modules imported during the context.

0 comments on commit ee532fb

Please sign in to comment.