[3.13] gh-133711: Fix test_regrtest for PYTHONUTF8=1 (GH-134839) (#134843)

gh-133711: Fix test_regrtest for PYTHONUTF8=1 (GH-134839)

Use "backslashreplace" error handler to decode stdout and stderr.
Example:

    vstinner@WIN C:\victor\python\main\build\test_python_worker_8360\x91>
    "C:\victor\python\main\PCbuild\amd64\python_d.exe"  -m test
    --fast-ci --slow-ci --testdir
    C:\Users\vstinner\AppData\Local\Temp\tmp0t59e8da
    test_regrtest_noop1 test_regrtest_noop2 test_regrtest_noop3
    test_regrtest_noop4

Notice the "\x91" byte at the end of the first line: it's the
non-ASCII U+00E6 character encoded to the OEM cp437 code page.
(cherry picked from commit 91618278e7)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Miss Islington (bot) 2025-05-28 17:44:03 +02:00 committed by GitHub
parent 8e60e6ca84
commit 5511533f59
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 1 deletions

View File

@ -871,7 +871,10 @@ def test_script_autotest(self):
self.run_tests(args) self.run_tests(args)
def run_batch(self, *args): def run_batch(self, *args):
proc = self.run_command(args) proc = self.run_command(args,
# gh-133711: cmd.exe uses the OEM code page
# to display the non-ASCII current directory
errors="backslashreplace")
self.check_output(proc.stdout) self.check_output(proc.stdout)
@unittest.skipUnless(sysconfig.is_python_build(), @unittest.skipUnless(sysconfig.is_python_build(),