mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
#11963: merge with 3.2.
This commit is contained in:
commit
3300878d8c
2 changed files with 38 additions and 12 deletions
|
@ -184,16 +184,27 @@ class ProcessTestCase(BaseTestCase):
|
||||||
self.assertEqual(p.stdin, None)
|
self.assertEqual(p.stdin, None)
|
||||||
|
|
||||||
def test_stdout_none(self):
|
def test_stdout_none(self):
|
||||||
# .stdout is None when not redirected
|
# .stdout is None when not redirected, and the child's stdout will
|
||||||
p = subprocess.Popen([sys.executable, "-c",
|
# be inherited from the parent. In order to test this we run a
|
||||||
'print(" this bit of output is from a '
|
# subprocess in a subprocess:
|
||||||
'test of stdout in a different '
|
# this_test
|
||||||
'process ...")'],
|
# \-- subprocess created by this test (parent)
|
||||||
stdin=subprocess.PIPE, stderr=subprocess.PIPE)
|
# \-- subprocess created by the parent subprocess (child)
|
||||||
self.addCleanup(p.stdin.close)
|
# The parent doesn't specify stdout, so the child will use the
|
||||||
|
# parent's stdout. This test checks that the message printed by the
|
||||||
|
# child goes to the parent stdout. The parent also checks that the
|
||||||
|
# child's stdout is None. See #11963.
|
||||||
|
code = ('import sys; from subprocess import Popen, PIPE;'
|
||||||
|
'p = Popen([sys.executable, "-c", "print(\'test_stdout_none\')"],'
|
||||||
|
' stdin=PIPE, stderr=PIPE);'
|
||||||
|
'p.wait(); assert p.stdout is None;')
|
||||||
|
p = subprocess.Popen([sys.executable, "-c", code],
|
||||||
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
self.addCleanup(p.stdout.close)
|
||||||
self.addCleanup(p.stderr.close)
|
self.addCleanup(p.stderr.close)
|
||||||
p.wait()
|
out, err = p.communicate()
|
||||||
self.assertEqual(p.stdout, None)
|
self.assertEqual(p.returncode, 0, err)
|
||||||
|
self.assertEqual(out.rstrip(), b'test_stdout_none')
|
||||||
|
|
||||||
def test_stderr_none(self):
|
def test_stderr_none(self):
|
||||||
# .stderr is None when not redirected
|
# .stderr is None when not redirected
|
||||||
|
@ -471,9 +482,22 @@ class ProcessTestCase(BaseTestCase):
|
||||||
|
|
||||||
def test_stdout_filedes_of_stdout(self):
|
def test_stdout_filedes_of_stdout(self):
|
||||||
# stdout is set to 1 (#1531862).
|
# stdout is set to 1 (#1531862).
|
||||||
cmd = r"import sys, os; sys.exit(os.write(sys.stdout.fileno(), b'.\n'))"
|
# To avoid printing the text on stdout, we do something similar to
|
||||||
rc = subprocess.call([sys.executable, "-c", cmd], stdout=1)
|
# test_stdout_none (see above). The parent subprocess calls the child
|
||||||
self.assertEqual(rc, 2)
|
# subprocess passing stdout=1, and this test uses stdout=PIPE in
|
||||||
|
# order to capture and check the output of the parent. See #11963.
|
||||||
|
code = ('import sys, subprocess; '
|
||||||
|
'rc = subprocess.call([sys.executable, "-c", '
|
||||||
|
' "import os, sys; sys.exit(os.write(sys.stdout.fileno(), '
|
||||||
|
'b\'test with stdout=1\'))"], stdout=1); '
|
||||||
|
'assert rc == 18')
|
||||||
|
p = subprocess.Popen([sys.executable, "-c", code],
|
||||||
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
self.addCleanup(p.stdout.close)
|
||||||
|
self.addCleanup(p.stderr.close)
|
||||||
|
out, err = p.communicate()
|
||||||
|
self.assertEqual(p.returncode, 0, err)
|
||||||
|
self.assertEqual(out.rstrip(), b'test with stdout=1')
|
||||||
|
|
||||||
def test_stdout_devnull(self):
|
def test_stdout_devnull(self):
|
||||||
p = subprocess.Popen([sys.executable, "-c",
|
p = subprocess.Popen([sys.executable, "-c",
|
||||||
|
|
|
@ -645,6 +645,8 @@ Library
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #11963: remove human verification from test_parser and test_subprocess.
|
||||||
|
|
||||||
- Issue #11732: add a new suppress_crash_popup() context manager to test.support
|
- Issue #11732: add a new suppress_crash_popup() context manager to test.support
|
||||||
that disables crash popups on Windows and use it in test_faulthandler and
|
that disables crash popups on Windows and use it in test_faulthandler and
|
||||||
test_capi.
|
test_capi.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue