https://github.com/python/cpython/commit/bcff99cb3f3b887a08c4f0ace1279ced38dd9e62
commit: bcff99cb3f3b887a08c4f0ace1279ced38dd9e62
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2026-03-23T23:47:47Z
summary:
gh-146202: Create tmp_dir in regrtest worker (#146347)
Create tmp_dir in libregrtest.worker since the directory can be
different than the --tempdir directory.
files:
A Misc/NEWS.d/next/Tests/2026-03-24-00-15-58.gh-issue-146202.LgH6Bj.rst
M Lib/test/libregrtest/utils.py
M Lib/test/libregrtest/worker.py
diff --git a/Lib/test/libregrtest/utils.py b/Lib/test/libregrtest/utils.py
index 7cc9d0bf262af1..3946a76e6add29 100644
--- a/Lib/test/libregrtest/utils.py
+++ b/Lib/test/libregrtest/utils.py
@@ -452,12 +452,6 @@ def get_temp_dir(tmp_dir: StrPath | None = None) ->
StrPath:
f"unexpectedly returned {tmp_dir!r} on WASI"
)
tmp_dir = os.path.join(tmp_dir, 'build')
-
- # When get_temp_dir() is called in a worker process,
- # get_temp_dir() path is different than in the parent process
- # which is not a WASI process. So the parent does not create
- # the same "tmp_dir" than the test worker process.
- os.makedirs(tmp_dir, exist_ok=True)
else:
tmp_dir = tempfile.gettempdir()
diff --git a/Lib/test/libregrtest/worker.py b/Lib/test/libregrtest/worker.py
index 1ad67e1cebf288..4e69ab9d8fad05 100644
--- a/Lib/test/libregrtest/worker.py
+++ b/Lib/test/libregrtest/worker.py
@@ -127,6 +127,9 @@ def main() -> NoReturn:
worker_json = sys.argv[1]
tmp_dir = get_temp_dir()
+ # get_temp_dir() can be different in the worker and the parent process.
+ # For example, if --tempdir option is used.
+ os.makedirs(tmp_dir, exist_ok=True)
work_dir = get_work_dir(tmp_dir, worker=True)
with exit_timeout():
diff --git
a/Misc/NEWS.d/next/Tests/2026-03-24-00-15-58.gh-issue-146202.LgH6Bj.rst
b/Misc/NEWS.d/next/Tests/2026-03-24-00-15-58.gh-issue-146202.LgH6Bj.rst
new file mode 100644
index 00000000000000..ef869fe2617256
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2026-03-24-00-15-58.gh-issue-146202.LgH6Bj.rst
@@ -0,0 +1,3 @@
+Fix a race condition in regrtest: make sure that the temporary directory is
+created in the worker process. Previously, temp_cwd() could fail on Windows if
+the "build" directory was not created. Patch by Victor Stinner.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]