From: Victor Stinner Date: Fri, 21 May 2010 20:13:12 +0000 (+0000) Subject: Issue #8780: Fix a regression introduced by r78946 in subprocess on Windows X-Git-Tag: v3.2a1~729 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b369358ee4a2ac39b9e276d765ee63f07049ecfc;p=python Issue #8780: Fix a regression introduced by r78946 in subprocess on Windows Ensure that stdout / stderr is inherited from the parent if stdout=PIPE / stderr=PIPE is not used. --- diff --git a/Lib/subprocess.py b/Lib/subprocess.py index adbee0b51d..ad6fd1f7a5 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -843,7 +843,7 @@ class Popen(object): # Process startup details if startupinfo is None: startupinfo = STARTUPINFO() - if None not in (p2cread, c2pwrite, errwrite): + if -1 not in (p2cread, c2pwrite, errwrite): startupinfo.dwFlags |= _subprocess.STARTF_USESTDHANDLES startupinfo.hStdInput = p2cread startupinfo.hStdOutput = c2pwrite diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 96c8ebfcfb..0dd5da4399 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -535,6 +535,17 @@ class ProcessTestCase(BaseTestCase): if c.exception.errno != 2: # ignore "no such file" raise c.exception + def test_issue8780(self): + # Ensure that stdout is inherited from the parent + # if stdout=PIPE is not used + code = ';'.join(( + 'import subprocess, sys', + 'retcode = subprocess.call(' + "[sys.executable, '-c', 'print(\"Hello World!\")'])", + 'assert retcode == 0')) + output = subprocess.check_output([sys.executable, '-c', code]) + self.assert_(output.startswith(b'Hello World!'), ascii(output)) + # context manager class _SuppressCoreFiles(object):