Skip to content

Commit 20c2349

Browse files
committed
build-image: check exit code from docker build
1 parent 01596a6 commit 20c2349

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/taskgraph/docker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def build_image(name, tag, args=None):
126126
cmdargs = ["docker", "image", "build", "--no-cache", "-"]
127127
if tag:
128128
cmdargs.insert(-1, f"-t={tag}")
129-
subprocess.run(cmdargs, input=buf.getvalue())
129+
subprocess.run(cmdargs, input=buf.getvalue(), check=True)
130130

131131
msg = f"Successfully built {name}"
132132
if tag:

test/test_docker.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def test_build_image(capsys, mock_docker_build):
3232
m_run.assert_called_once_with(
3333
["docker", "image", "build", "--no-cache", f"-t={tag}", "-"],
3434
input=b"xyz",
35+
check=True,
3536
)
3637

3738
out, _ = capsys.readouterr()
@@ -48,8 +49,33 @@ def test_build_image_no_tag(capsys, mock_docker_build):
4849
m_run.assert_called_once_with(
4950
["docker", "image", "build", "--no-cache", "-"],
5051
input=b"xyz",
52+
check=True,
5153
)
5254

5355
out, _ = capsys.readouterr()
5456
assert f"Successfully built {image}" in out
5557
assert "Image is not suitable for deploying/pushing" in out
58+
59+
60+
def test_build_image_error(capsys, mock_docker_build):
61+
m_stream, m_run = mock_docker_build
62+
63+
def mock_run(*popenargs, check=False, **kwargs):
64+
if check:
65+
raise docker.subprocess.CalledProcessError(1, popenargs)
66+
return 1
67+
68+
m_run.side_effect = mock_run
69+
image = "hello-world"
70+
71+
with pytest.raises(Exception):
72+
docker.build_image(image, None)
73+
m_stream.assert_called_once()
74+
m_run.assert_called_once_with(
75+
["docker", "image", "build", "--no-cache", "-"],
76+
input=b"xyz",
77+
check=True,
78+
)
79+
80+
out, _ = capsys.readouterr()
81+
assert f"Successfully built {image}" not in out

0 commit comments

Comments
 (0)