mirror of https://github.com/docker/docker-py.git
Merge pull request #1626 from datwiz/images-build-error-1625
fix #1625 where ImageCollection.build() could return with incorrect image id
This commit is contained in:
commit
bb82bcf784
|
@ -166,19 +166,20 @@ class ImageCollection(Collection):
|
|||
if isinstance(resp, six.string_types):
|
||||
return self.get(resp)
|
||||
last_event = None
|
||||
image_id = None
|
||||
for chunk in json_stream(resp):
|
||||
if 'error' in chunk:
|
||||
raise BuildError(chunk['error'])
|
||||
if 'stream' in chunk:
|
||||
match = re.search(
|
||||
r'(Successfully built |sha256:)([0-9a-f]+)',
|
||||
r'(^Successfully built |sha256:)([0-9a-f]+)$',
|
||||
chunk['stream']
|
||||
)
|
||||
if match:
|
||||
image_id = match.group(2)
|
||||
return self.get(image_id)
|
||||
last_event = chunk
|
||||
|
||||
if image_id:
|
||||
return self.get(image_id)
|
||||
raise BuildError(last_event or 'Unknown')
|
||||
|
||||
def get(self, name):
|
||||
|
|
|
@ -39,6 +39,17 @@ class ImageCollectionTest(BaseIntegrationTest):
|
|||
self.tmp_imgs.append(image.id)
|
||||
assert client.containers.run(image) == b"hello world\n"
|
||||
|
||||
def test_build_with_success_build_output(self):
|
||||
client = docker.from_env(version=TEST_API_VERSION)
|
||||
image = client.images.build(
|
||||
tag='dup-txt-tag', fileobj=io.BytesIO(
|
||||
"FROM alpine\n"
|
||||
"CMD echo Successfully built abcd1234".encode('ascii')
|
||||
)
|
||||
)
|
||||
self.tmp_imgs.append(image.id)
|
||||
assert client.containers.run(image) == b"Successfully built abcd1234\n"
|
||||
|
||||
def test_list(self):
|
||||
client = docker.from_env(version=TEST_API_VERSION)
|
||||
image = client.images.pull('alpine:latest')
|
||||
|
|
Loading…
Reference in New Issue