mirror of
https://github.com/python/cpython.git
synced 2024-11-25 19:03:49 +08:00
#2683: Popen.communicate() argument must be bytes.
This commit is contained in:
parent
c22ed14ddd
commit
1abcbf8e19
@ -883,8 +883,6 @@ class Popen(object):
|
||||
|
||||
if self.stdin:
|
||||
if input is not None:
|
||||
if isinstance(input, str):
|
||||
input = input.encode()
|
||||
self.stdin.write(input)
|
||||
self.stdin.close()
|
||||
|
||||
@ -1129,10 +1127,6 @@ class Popen(object):
|
||||
|
||||
|
||||
def _communicate(self, input):
|
||||
if self.stdin:
|
||||
if isinstance(input, str): # Unicode
|
||||
input = input.encode("utf-8") # XXX What else?
|
||||
input = bytes(input)
|
||||
read_set = []
|
||||
write_set = []
|
||||
stdout = None # Return
|
||||
|
@ -302,7 +302,7 @@ class ProcessTestCase(unittest.TestCase):
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
(stdout, stderr) = p.communicate("banana")
|
||||
(stdout, stderr) = p.communicate(b"banana")
|
||||
self.assertEqual(stdout, b"banana")
|
||||
self.assertEqual(remove_stderr_debug_decorations(stderr),
|
||||
b"pineapple")
|
||||
@ -420,7 +420,7 @@ class ProcessTestCase(unittest.TestCase):
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
data = p.communicate("lime")[0]
|
||||
data = p.communicate(b"lime")[0]
|
||||
self.assertEqual(data, b"lime")
|
||||
|
||||
|
||||
|
@ -17,6 +17,9 @@ Core and Builtins
|
||||
Library
|
||||
-------
|
||||
|
||||
- Issue #2683: Fix inconsistency in subprocess.Popen.communicate(): the
|
||||
argument now must be a bytes object in any case.
|
||||
|
||||
- Issue #3145: help("modules whatever") failed when trying to load the source
|
||||
code of every single module of the standard library, including invalid files
|
||||
used in the test suite.
|
||||
|
Loading…
Reference in New Issue
Block a user