summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_os.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2011-03-20 22:37:55 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2011-03-20 22:37:55 (GMT)
commitb938bcd211bfcab13be38200a2f59947691118bb (patch)
tree04afc2a782ce970af29f149651402c90015c23e4 /Lib/test/test_os.py
parent0421810b3b2dbf41c0ddb86d9d7711ca9dec2a2b (diff)
parente0daff1c61e323d2a39dd8241de67082d1f10fd7 (diff)
downloadcpython-b938bcd211bfcab13be38200a2f59947691118bb.zip
cpython-b938bcd211bfcab13be38200a2f59947691118bb.tar.gz
cpython-b938bcd211bfcab13be38200a2f59947691118bb.tar.bz2
(merge) Issue #11395: io.FileIO().write() clamps the data length to 32,767
bytes on Windows if the file is a TTY to workaround a Windows bug. The Windows console returns an error (12: not enough space error) on writing into stdout if stdout mode is binary and the length is greater than 66,000 bytes (or less, depending on heap usage).
Diffstat (limited to 'Lib/test/test_os.py')
-rw-r--r--Lib/test/test_os.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index e40f763..35aa7fa 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -97,6 +97,25 @@ class FileTests(unittest.TestCase):
self.assertEqual(fobj.read().splitlines(),
[b"bacon", b"eggs", b"spam"])
+ def write_windows_console(self, *args):
+ retcode = subprocess.call(args,
+ # use a new console to not flood the test output
+ creationflags=subprocess.CREATE_NEW_CONSOLE,
+ # use a shell to hide the console window (SW_HIDE)
+ shell=True)
+ self.assertEqual(retcode, 0)
+
+ @unittest.skipUnless(sys.platform == 'win32',
+ 'test specific to the Windows console')
+ def test_write_windows_console(self):
+ # Issue #11395: the Windows console returns an error (12: not enough
+ # space error) on writing into stdout if stdout mode is binary and the
+ # length is greater than 66,000 bytes (or less, depending on heap
+ # usage).
+ code = "print('x' * 100000)"
+ self.write_windows_console(sys.executable, "-c", code)
+ self.write_windows_console(sys.executable, "-u", "-c", code)
+
class TemporaryFileTests(unittest.TestCase):
def setUp(self):