Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb2aa28e

Browse files
gh-95027: Fix regrtest stdout encoding on Windows (GH-98492)
On Windows, when the Python test suite is run with the -jN option,the ANSI code page is now used as the encoding for the stdouttemporary file, rather than using UTF-8 which can lead to decodingerrors.(cherry picked from commitec1f6f5)Co-authored-by: Victor Stinner <vstinner@python.org>
1 parent0bc2cf9 commitb2aa28e

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

‎Lib/test/libregrtest/runtest_mp.py‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
fromtest.libregrtest.setupimportsetup_tests
2222
fromtest.libregrtest.utilsimportformat_duration,print_warning
2323

24+
ifsys.platform=='win32':
25+
importlocale
26+
2427

2528
# Display the running tests if nothing happened last N seconds
2629
PROGRESS_UPDATE=30.0# seconds
@@ -259,11 +262,16 @@ def _run_process(self, test_name: str, stdout_fh: TextIO) -> int:
259262
self.current_test_name=None
260263

261264
def_runtest(self,test_name:str)->MultiprocessResult:
265+
ifsys.platform=='win32':
266+
# gh-95027: When stdout is not a TTY, Python uses the ANSI code
267+
# page for the sys.stdout encoding. If the main process runs in a
268+
# terminal, sys.stdout uses WindowsConsoleIO with UTF-8 encoding.
269+
encoding=locale.getencoding()
270+
else:
271+
encoding=sys.stdout.encoding
262272
# gh-94026: Write stdout+stderr to a tempfile as workaround for
263273
# non-blocking pipes on Emscripten with NodeJS.
264-
withtempfile.TemporaryFile(
265-
'w+',encoding=sys.stdout.encoding
266-
)asstdout_fh:
274+
withtempfile.TemporaryFile('w+',encoding=encoding)asstdout_fh:
267275
# gh-93353: Check for leaked temporary files in the parent process,
268276
# since the deletion of temporary files can happen late during
269277
# Python finalization: too late for libregrtest.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
On Windows, when the Python test suite is run with the ``-jN`` option, the
2+
ANSI code page is now used as the encoding for the stdout temporary file,
3+
rather than using UTF-8 which can lead to decoding errors. Patch by Victor
4+
Stinner.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp