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): def pull_service(service):
service.pull(ignore_pull_failures, True) service.pull(ignore_pull_failures, True)
parallel.parallel_execute( _, errors = parallel.parallel_execute(
services, services,
pull_service, pull_service,
operator.attrgetter('name'), operator.attrgetter('name'),
'Pulling', 'Pulling',
limit=5, limit=5,
) )
if len(errors):
raise ProjectError(b"\n".join(errors.values()))
else: else:
for service in services: for service in services:
service.pull(ignore_pull_failures, silent=silent) service.pull(ignore_pull_failures, silent=silent)

View File

@ -6,6 +6,7 @@ import datetime
import json import json
import os import os
import os.path import os.path
import re
import signal import signal
import subprocess import subprocess
import time import time
@ -448,6 +449,20 @@ class CLITestCase(DockerClientTestCase):
assert self.dispatch(['pull', '--quiet']).stderr == '' assert self.dispatch(['pull', '--quiet']).stderr == ''
assert self.dispatch(['pull', '--quiet']).stdout == '' 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): def test_build_plain(self):
self.base_dir = 'tests/fixtures/simple-dockerfile' self.base_dir = 'tests/fixtures/simple-dockerfile'
self.dispatch(['build', 'simple']) self.dispatch(['build', 'simple'])