Don't attempt to retrieve container's stderr if `auto_remove` was set

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2017-12-19 13:21:56 -08:00
parent ac68a36a89
commit 2250fa2ebd
2 changed files with 16 additions and 2 deletions

View File

@ -737,7 +737,9 @@ class ContainerCollection(Collection):
exit_status = container.wait()
if exit_status != 0:
out = container.logs(stdout=False, stderr=True)
out = None
if not kwargs.get('auto_remove'):
out = container.logs(stdout=False, stderr=True)
if remove:
container.remove()

View File

@ -1,5 +1,7 @@
import docker
import tempfile
import docker
import pytest
from .base import BaseIntegrationTest, TEST_API_VERSION
from ..helpers import random_name, requires_api_version
@ -114,6 +116,16 @@ class ContainerCollectionTest(BaseIntegrationTest):
)
assert out == b'hello\n'
@requires_api_version('1.25')
def test_run_with_auto_remove_error(self):
client = docker.from_env(version=TEST_API_VERSION)
with pytest.raises(docker.errors.ContainerError) as e:
client.containers.run(
'alpine', 'sh -c ">&2 echo error && exit 1"', auto_remove=True
)
assert e.value.exit_status == 1
assert e.value.stderr is None
def test_run_with_streamed_logs(self):
client = docker.from_env(version=TEST_API_VERSION)
out = client.containers.run(