Add yet another test for subprocess.Popen.communicate
This commit is contained in:
parent
0689ce4396
commit
5395d2f07d
|
@ -645,6 +645,34 @@ class ProcessTestCase(BaseTestCase):
|
|||
p.communicate()
|
||||
self.assertEqual(p.returncode, 0)
|
||||
|
||||
def test_universal_newlines_communicate_stdin_stdout_stderr(self):
|
||||
# universal newlines through communicate(), with only stdin
|
||||
p = subprocess.Popen([sys.executable, "-c",
|
||||
'import sys,os;' + SETBINARY + '''\nif True:
|
||||
s = sys.stdin.readline()
|
||||
sys.stdout.write(s)
|
||||
sys.stdout.write("line2\\r")
|
||||
sys.stderr.write("eline2\\n")
|
||||
s = sys.stdin.read()
|
||||
sys.stdout.write(s+"line4\\n")
|
||||
sys.stdout.write(s+"line5\\r\\n")
|
||||
sys.stderr.write("eline6\\n")
|
||||
sys.stderr.write("eline7\\r")
|
||||
sys.stderr.write("eline8\\r\\n")
|
||||
'''],
|
||||
stdin=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
universal_newlines=1)
|
||||
self.addCleanup(p.stdout.close)
|
||||
self.addCleanup(p.stderr.close)
|
||||
(stdout, stderr) = p.communicate("line1\nline3\n")
|
||||
self.assertEqual(p.returncode, 0)
|
||||
self.assertEqual("line1\nline2\nline3\nline4\nline3\nline5\n", stdout)
|
||||
# Python debug build push something like "[42442 refs]\n"
|
||||
# to stderr at exit of subprocess.
|
||||
self.assertTrue(stderr.startswith("eline2\neline6\neline7\neline8\n"))
|
||||
|
||||
def test_no_leaking(self):
|
||||
# Make sure we leak no resources
|
||||
if not mswindows:
|
||||
|
|
Loading…
Reference in New Issue