Browse Source

Added integration test for build error when building with docker cli

Signed-off-by: Erfan Gholamian <[email protected]>
Erfan Gholamian 5 years ago
parent
commit
76963e44ad
1 changed files with 21 additions and 0 deletions
  1. 21 0
      tests/integration/service_test.py

+ 21 - 0
tests/integration/service_test.py

@@ -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)