|
|
@@ -36,6 +36,7 @@ from compose.parallel import ParallelStreamWriter
|
|
|
from compose.project import OneOffFilter
|
|
|
from compose.project import Project
|
|
|
from compose.service import BuildAction
|
|
|
+from compose.service import BuildError
|
|
|
from compose.service import ConvergencePlan
|
|
|
from compose.service import ConvergenceStrategy
|
|
|
from compose.service import IpcMode
|
|
|
@@ -987,6 +988,26 @@ class ServiceTest(DockerClientTestCase):
|
|
|
image = self.client.inspect_image('composetest_web')
|
|
|
assert image['Config']['Labels']['com.docker.compose.test']
|
|
|
|
|
|
+ def test_build_cli_with_build_error(self):
|
|
|
+ base_dir = tempfile.mkdtemp()
|
|
|
+ self.addCleanup(shutil.rmtree, base_dir)
|
|
|
+
|
|
|
+ with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
|
|
|
+ f.write('\n'.join([
|
|
|
+ "FROM busybox",
|
|
|
+ "RUN exit 2",
|
|
|
+ ]))
|
|
|
+ service = self.create_service('web',
|
|
|
+ build={
|
|
|
+ 'context': base_dir,
|
|
|
+ 'labels': {'com.docker.compose.test': 'true'}},
|
|
|
+ )
|
|
|
+ with pytest.raises(BuildError) as excinfo:
|
|
|
+ service.build(cli=True)
|
|
|
+
|
|
|
+ reason = excinfo.value.reason
|
|
|
+ assert "The command '/bin/sh -c exit 2' returned a non-zero code: 2" == reason
|
|
|
+
|
|
|
def test_up_build_cli(self):
|
|
|
base_dir = tempfile.mkdtemp()
|
|
|
self.addCleanup(shutil.rmtree, base_dir)
|