From 2250fa2ebd03f5f01db06fa85998212d97882680 Mon Sep 17 00:00:00 2001 From: Joffrey F Date: Tue, 19 Dec 2017 13:21:56 -0800 Subject: Don't attempt to retrieve container's stderr if `auto_remove` was set Signed-off-by: Joffrey F --- docker/models/containers.py | 4 +++- tests/integration/models_containers_test.py | 14 +++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/docker/models/containers.py b/docker/models/containers.py index f16b7cd..6ba308e 100644 --- a/docker/models/containers.py +++ b/docker/models/containers.py @@ -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() diff --git a/tests/integration/models_containers_test.py b/tests/integration/models_containers_test.py index 7707ae2..d246189 100644 --- a/tests/integration/models_containers_test.py +++ b/tests/integration/models_containers_test.py @@ -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( -- cgit v1.2.1