mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Use tempfile.mkdtemp() instead of tempfile.tempdir for where importlib places
source files for tests. Allows for concurrent execution of the tests by preventing various executions from trampling each other. Closes issue #7248.
This commit is contained in:
parent
0ae4511624
commit
cfed029c42
2 changed files with 8 additions and 11 deletions
|
@ -42,8 +42,8 @@ def create_modules(*names):
|
|||
that contains the name passed into the context manager that caused the
|
||||
creation of the module.
|
||||
|
||||
All files are created in a temporary directory specified by
|
||||
tempfile.gettempdir(). This directory is inserted at the beginning of
|
||||
All files are created in a temporary directory returned by
|
||||
tempfile.mkdtemp(). This directory is inserted at the beginning of
|
||||
sys.path. When the context manager exits all created files (source and
|
||||
bytecode) are explicitly deleted.
|
||||
|
||||
|
@ -58,7 +58,7 @@ def create_modules(*names):
|
|||
state_manager = None
|
||||
uncache_manager = None
|
||||
try:
|
||||
temp_dir = tempfile.gettempdir()
|
||||
temp_dir = tempfile.mkdtemp()
|
||||
mapping['.root'] = temp_dir
|
||||
import_names = set()
|
||||
for name in names:
|
||||
|
@ -91,11 +91,4 @@ def create_modules(*names):
|
|||
state_manager.__exit__(None, None, None)
|
||||
if uncache_manager is not None:
|
||||
uncache_manager.__exit__(None, None, None)
|
||||
# Reverse the order for path removal to unroll directory creation.
|
||||
for path in reversed(created_paths):
|
||||
if file_path.endswith('.py'):
|
||||
support.unlink(path)
|
||||
support.unlink(path + 'c')
|
||||
support.unlink(path + 'o')
|
||||
else:
|
||||
os.rmdir(path)
|
||||
support.rmtree(temp_dir)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue