mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Fixes issue #17488: Change the subprocess.Popen bufsize parameter default value
from unbuffered (0) to buffering (-1) to match the behavior existing code expects and match the behavior of the subprocess module in Python 2 to avoid introducing hard to track down bugs.
This commit is contained in:
commit
4a8ea9e2a6
4 changed files with 55 additions and 19 deletions
|
@ -82,6 +82,34 @@ class PopenExecuteChildRaises(subprocess.Popen):
|
|||
|
||||
class ProcessTestCase(BaseTestCase):
|
||||
|
||||
def test_io_buffered_by_default(self):
|
||||
p = subprocess.Popen([sys.executable, "-c", "import sys; sys.exit(0)"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
try:
|
||||
self.assertIsInstance(p.stdin, io.BufferedIOBase)
|
||||
self.assertIsInstance(p.stdout, io.BufferedIOBase)
|
||||
self.assertIsInstance(p.stderr, io.BufferedIOBase)
|
||||
finally:
|
||||
p.stdin.close()
|
||||
p.stdout.close()
|
||||
p.stderr.close()
|
||||
p.wait()
|
||||
|
||||
def test_io_unbuffered_works(self):
|
||||
p = subprocess.Popen([sys.executable, "-c", "import sys; sys.exit(0)"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE, bufsize=0)
|
||||
try:
|
||||
self.assertIsInstance(p.stdin, io.RawIOBase)
|
||||
self.assertIsInstance(p.stdout, io.RawIOBase)
|
||||
self.assertIsInstance(p.stderr, io.RawIOBase)
|
||||
finally:
|
||||
p.stdin.close()
|
||||
p.stdout.close()
|
||||
p.stderr.close()
|
||||
p.wait()
|
||||
|
||||
def test_call_seq(self):
|
||||
# call() function with sequence argument
|
||||
rc = subprocess.call([sys.executable, "-c",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue