gh-106659: Fix test_embed.test_forced_io_encoding() on Windows (#108010)

Use config.legacy_windows_stdio=1 to avoid _io._WindowsConsoleIO.
This commit is contained in:
Victor Stinner 2023-08-16 13:56:56 +02:00 committed by GitHub
parent 57a20b0960
commit e35c722d22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -941,7 +941,9 @@ Removed
* ``Py_SetPath()``: set :c:member:`PyConfig.module_search_paths` instead.
* ``Py_SetProgramName()``: set :c:member:`PyConfig.program_name` instead.
* ``Py_SetPythonHome()``: set :c:member:`PyConfig.home` instead.
* ``Py_SetStandardStreamEncoding()``: set :c:member:`PyConfig.stdio_encoding` instead.
* ``Py_SetStandardStreamEncoding()``: set :c:member:`PyConfig.stdio_encoding`
instead, and set also maybe :c:member:`PyConfig.legacy_windows_stdio` (on
Windows).
* ``_Py_SetProgramFullPath()``: set :c:member:`PyConfig.executable` instead.
Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization

View File

@ -237,6 +237,11 @@ static void check_stdio_details(const wchar_t *encoding, const wchar_t *errors)
if (errors) {
config_set_string(&config, &config.stdio_errors, errors);
}
#ifdef MS_WINDOWS
// gh-106659: On Windows, don't use _io._WindowsConsoleIO which always
// announce UTF-8 for sys.stdin.encoding.
config.legacy_windows_stdio = 1;
#endif
config_set_program_name(&config);
init_from_config_clear(&config);