Issue #11459: A `bufsize` value of 0 in subprocess.Popen() really creates
unbuffered pipes, such that select() works properly on them.
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index c781904..410849f 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -864,6 +864,21 @@
             def prepare():
                 raise ValueError("surrogate:\uDCff")
 
+        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()
 
     #
     # Windows tests