Skip to content

Commit 652d693

Browse files
authored
gh-133374: fix test_python_legacy_windows_stdio (GH-134080)
1 parent e3dda8f commit 652d693

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

Lib/test/test_cmd_line.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -972,10 +972,25 @@ def test_python_legacy_windows_fs_encoding(self):
972972

973973
@unittest.skipUnless(support.MS_WINDOWS, 'Test only applicable on Windows')
974974
def test_python_legacy_windows_stdio(self):
975-
code = "import sys; print(sys.stdin.encoding, sys.stdout.encoding)"
976-
expected = 'cp'
977-
rc, out, err = assert_python_ok('-c', code, PYTHONLEGACYWINDOWSSTDIO='1')
978-
self.assertIn(expected.encode(), out)
975+
# Test that _WindowsConsoleIO is used when PYTHONLEGACYWINDOWSSTDIO
976+
# is not set.
977+
# We cannot use PIPE becase it prevents creating new console.
978+
# So we use exit code.
979+
code = "import sys; sys.exit(type(sys.stdout.buffer.raw).__name__ != '_WindowsConsoleIO')"
980+
env = os.environ.copy()
981+
env["PYTHONLEGACYWINDOWSSTDIO"] = ""
982+
p = subprocess.run([sys.executable, "-c", code],
983+
creationflags=subprocess.CREATE_NEW_CONSOLE,
984+
env=env)
985+
self.assertEqual(p.returncode, 0)
986+
987+
# Then test that FIleIO is used when PYTHONLEGACYWINDOWSSTDIO is set.
988+
code = "import sys; sys.exit(type(sys.stdout.buffer.raw).__name__ != 'FileIO')"
989+
env["PYTHONLEGACYWINDOWSSTDIO"] = "1"
990+
p = subprocess.run([sys.executable, "-c", code],
991+
creationflags=subprocess.CREATE_NEW_CONSOLE,
992+
env=env)
993+
self.assertEqual(p.returncode, 0)
979994

980995
@unittest.skipIf("-fsanitize" in sysconfig.get_config_vars().get('PY_CFLAGS', ()),
981996
"PYTHONMALLOCSTATS doesn't work with ASAN")

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy