diff --git a/docker/utils/socket.py b/docker/utils/socket.py index 4b328536..7ba95055 100644 --- a/docker/utils/socket.py +++ b/docker/utils/socket.py @@ -138,15 +138,21 @@ def consume_socket_output(frames, demux=False): # If the streams are demultiplexed, the generator yields tuples # (stdout, stderr) - out = [six.binary_type(), six.binary_type()] + out = [None, None] for frame in frames: # It is guaranteed that for each frame, one and only one stream # is not None. assert frame != (None, None) if frame[0] is not None: - out[0] += frame[0] + if out[0] is None: + out[0] = frame[0] + else: + out[0] += frame[0] else: - out[1] += frame[1] + if out[1] is None: + out[1] = frame[1] + else: + out[1] += frame[1] return tuple(out) diff --git a/tests/integration/api_exec_test.py b/tests/integration/api_exec_test.py index fd2f0eae..857a18cb 100644 --- a/tests/integration/api_exec_test.py +++ b/tests/integration/api_exec_test.py @@ -134,7 +134,7 @@ class ExecTest(BaseAPIIntegrationTest): # tty=True, stream=False, demux=True res = self.client.exec_create(id, cmd, tty=True) exec_log = self.client.exec_start(res, demux=True) - assert exec_log == (b'hello out\r\nhello err\r\n', b'') + assert exec_log == (b'hello out\r\nhello err\r\n', None) # tty=True, stream=True, demux=True res = self.client.exec_create(id, cmd, tty=True) diff --git a/tests/unit/api_test.py b/tests/unit/api_test.py index 0f5ad7c4..fac314d3 100644 --- a/tests/unit/api_test.py +++ b/tests/unit/api_test.py @@ -574,7 +574,7 @@ class TCPSocketStreamTest(unittest.TestCase): def test_read_from_socket_6(self): res = self.request(stream=False, tty=True, demux=True) - assert res == (self.stdout_data + self.stderr_data, b'') + assert res == (self.stdout_data + self.stderr_data, None) def test_read_from_socket_7(self): res = self.request(stream=False, tty=False, demux=False)