|
@@ -5,6 +5,7 @@ from __future__ import unicode_literals
|
|
|
import datetime
|
|
|
|
|
|
import docker
|
|
|
+import pytest
|
|
|
from docker.errors import NotFound
|
|
|
|
|
|
from .. import mock
|
|
@@ -16,8 +17,10 @@ from compose.const import COMPOSEFILE_V2_0 as V2_0
|
|
|
from compose.const import COMPOSEFILE_V2_4 as V2_4
|
|
|
from compose.const import LABEL_SERVICE
|
|
|
from compose.container import Container
|
|
|
+from compose.errors import OperationFailedError
|
|
|
from compose.project import NoSuchService
|
|
|
from compose.project import Project
|
|
|
+from compose.project import ProjectError
|
|
|
from compose.service import ImageType
|
|
|
from compose.service import Service
|
|
|
|
|
@@ -588,3 +591,29 @@ class ProjectTest(unittest.TestCase):
|
|
|
name='test', client=self.mock_client, config_data=config_data, default_platform='windows'
|
|
|
)
|
|
|
assert project.get_service('web').options.get('platform') == 'linux/s390x'
|
|
|
+
|
|
|
+ @mock.patch('compose.parallel.ParallelStreamWriter._write_noansi')
|
|
|
+ def test_error_parallel_pull(self, mock_write):
|
|
|
+ project = Project.from_config(
|
|
|
+ name='test',
|
|
|
+ client=self.mock_client,
|
|
|
+ config_data=Config(
|
|
|
+ version=V2_0,
|
|
|
+ services=[{
|
|
|
+ 'name': 'web',
|
|
|
+ 'image': 'busybox:latest',
|
|
|
+ }],
|
|
|
+ networks=None,
|
|
|
+ volumes=None,
|
|
|
+ secrets=None,
|
|
|
+ configs=None,
|
|
|
+ ),
|
|
|
+ )
|
|
|
+
|
|
|
+ self.mock_client.pull.side_effect = OperationFailedError('pull error')
|
|
|
+ with pytest.raises(ProjectError):
|
|
|
+ project.pull(parallel_pull=True)
|
|
|
+
|
|
|
+ self.mock_client.pull.side_effect = OperationFailedError(b'pull error')
|
|
|
+ with pytest.raises(ProjectError):
|
|
|
+ project.pull(parallel_pull=True)
|