Fix exit code 0 upon parallel pull failure.

Signed-off-by: Aaron Nall <aronahl@hotmail.com>
This commit is contained in:
aronahl 2017-08-09 19:44:12 -04:00 committed by Joffrey F
parent 7210fdb21c
commit 390ba801a3
2 changed files with 18 additions and 1 deletions

View File

@ -498,13 +498,15 @@ class Project(object):
def pull_service(service):
service.pull(ignore_pull_failures, True)
parallel.parallel_execute(
_, errors = parallel.parallel_execute(
services,
pull_service,
operator.attrgetter('name'),
'Pulling',
limit=5,
)
if len(errors):
raise ProjectError(b"\n".join(errors.values()))
else:
for service in services:
service.pull(ignore_pull_failures, silent=silent)

View File

@ -6,6 +6,7 @@ import datetime
import json
import os
import os.path
import re
import signal
import subprocess
import time
@ -448,6 +449,20 @@ class CLITestCase(DockerClientTestCase):
assert self.dispatch(['pull', '--quiet']).stderr == ''
assert self.dispatch(['pull', '--quiet']).stdout == ''
def test_pull_with_parallel_failure(self):
result = self.dispatch([
'-f', 'ignore-pull-failures.yml', 'pull', '--parallel'],
returncode=1
)
self.assertRegexpMatches(result.stderr, re.compile('^Pulling simple', re.MULTILINE))
self.assertRegexpMatches(result.stderr, re.compile('^Pulling another', re.MULTILINE))
self.assertRegexpMatches(result.stderr,
re.compile('^ERROR: for another .*does not exist.*', re.MULTILINE))
self.assertRegexpMatches(result.stderr,
re.compile('''^(ERROR: )?(b')?.* nonexisting-image''',
re.MULTILINE))
def test_build_plain(self):
self.base_dir = 'tests/fixtures/simple-dockerfile'
self.dispatch(['build', 'simple'])