diff Lib/test/test_subprocess.py @ 68680:7451da272111 3.2

Issue #11459: A `bufsize` value of 0 in subprocess.Popen() really creates unbuffered pipes, such that select() works properly on them.
author Antoine Pitrou <solipsis@pitrou.net>
date Sat, 19 Mar 2011 17:04:13 +0100
parents ed802f82f07a 1dc52ecb8949
children 72f6f5a29e7a cb148da52c47
line wrap: on
line diff
--- a/Lib/test/test_subprocess.py	Sat Mar 19 17:45:40 2011 +0800
+++ b/Lib/test/test_subprocess.py	Sat Mar 19 17:04:13 2011 +0100
@@ -1216,6 +1216,22 @@
                          " non-zero with this error:\n%s" %
                          stderr.decode('utf8'))
 
+    def test_select_unbuffered(self):
+        # Issue #11459: bufsize=0 should really set the pipes as
+        # unbuffered (and therefore let select() work properly).
+        select = support.import_module("select")
+        p = subprocess.Popen([sys.executable, "-c",
+                              'import sys;'
+                              'sys.stdout.write("apple")'],
+                             stdout=subprocess.PIPE,
+                             bufsize=0)
+        f = p.stdout
+        try:
+            self.assertEqual(f.read(4), b"appl")
+            self.assertIn(f, select.select([f], [], [], 0.0)[0])
+        finally:
+            p.wait()
+
 
 @unittest.skipUnless(mswindows, "Windows specific tests")
 class Win32ProcessTestCase(BaseTestCase):