Kaydet (Commit) a453aeff authored tarafından Joffrey F's avatar Joffrey F

Merge branch 'aaronthebaron-1577-multi-success-message'

...@@ -166,18 +166,21 @@ class ImageCollection(Collection): ...@@ -166,18 +166,21 @@ class ImageCollection(Collection):
resp = self.client.api.build(**kwargs) resp = self.client.api.build(**kwargs)
if isinstance(resp, six.string_types): if isinstance(resp, six.string_types):
return self.get(resp) return self.get(resp)
events = list(json_stream(resp)) last_event = None
if not events: for chunk in json_stream(resp):
return BuildError('Unknown') if 'error' in chunk:
event = events[-1] raise BuildError(chunk['error'])
if 'stream' in event: if 'stream' in chunk:
match = re.search(r'(Successfully built |sha256:)([0-9a-f]+)', match = re.search(
event.get('stream', '')) r'(Successfully built |sha256:)([0-9a-f]+)',
chunk['stream']
)
if match: if match:
image_id = match.group(2) image_id = match.group(2)
return self.get(image_id) return self.get(image_id)
last_event = chunk
raise BuildError(event.get('error') or event) raise BuildError(last_event or 'Unknown')
def get(self, name): def get(self, name):
""" """
......
...@@ -28,6 +28,15 @@ class ImageCollectionTest(BaseIntegrationTest): ...@@ -28,6 +28,15 @@ class ImageCollectionTest(BaseIntegrationTest):
assert str(cm.exception) == ("Unknown instruction: " assert str(cm.exception) == ("Unknown instruction: "
"NOTADOCKERFILECOMMAND") "NOTADOCKERFILECOMMAND")
def test_build_with_multiple_success(self):
client = docker.from_env(version=TEST_API_VERSION)
image = client.images.build(tag='some-tag', fileobj=io.BytesIO(
"FROM alpine\n"
"CMD echo hello world".encode('ascii')
))
self.tmp_imgs.append(image.id)
assert client.containers.run(image) == b"hello world\n"
def test_list(self): def test_list(self):
client = docker.from_env(version=TEST_API_VERSION) client = docker.from_env(version=TEST_API_VERSION)
image = client.images.pull('alpine:latest') image = client.images.pull('alpine:latest')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment