fix: smoke-test agent images after build, add start --no-cache
npm treats optionalDependencies failures as non-fatal, so a transient network blip fetching claude-code's platform-native binary during `npm install -g` left a stub CLI in an image that still "built" successfully — then got baked into the Docker/Container layer cache until forced to rebuild. Post-build smoke test (provider-declared argv, run in a throwaway container of the freshly built image) fails the launch loudly instead of shipping a broken image; --no-cache gives an escape hatch to force a from-scratch rebuild. Closes #353.
This commit is contained in:
@@ -103,6 +103,8 @@ class TestLaunchCommittedImage(unittest.TestCase):
|
||||
launch_mod.docker_mod, "image_exists", return_value=image_present,
|
||||
), mock.patch.object(
|
||||
launch_mod.docker_mod, "build_image", side_effect=fake_build,
|
||||
), mock.patch.object(
|
||||
launch_mod.docker_mod, "verify_agent_image",
|
||||
), mock.patch.object(
|
||||
launch_mod, "egress_tls_init",
|
||||
return_value=(Path("/egress_ca"), Path("/egress_cert")),
|
||||
|
||||
@@ -87,6 +87,7 @@ class TestTeardownWarning(unittest.TestCase):
|
||||
buf = io.StringIO()
|
||||
|
||||
with mock.patch.object(launch_mod.docker_mod, "build_image"), \
|
||||
mock.patch.object(launch_mod.docker_mod, "verify_agent_image"), \
|
||||
mock.patch.object(
|
||||
launch_mod, "egress_tls_init",
|
||||
return_value=(Path("/egress_ca"), Path("/egress_cert")),
|
||||
|
||||
@@ -357,12 +357,17 @@ class TestMacosContainerLaunchCommittedImage(unittest.TestCase):
|
||||
launch.container_mod, "image_exists", return_value=False,
|
||||
), patch.object(
|
||||
launch.container_mod, "build_image", side_effect=fake_build,
|
||||
):
|
||||
), patch.object(
|
||||
launch.container_mod, "verify_agent_image",
|
||||
) as verify:
|
||||
updated = launch._build_images(plan)
|
||||
|
||||
self.assertEqual("bot-bottle-agent:latest", updated.image)
|
||||
self.assertEqual(2, len(calls))
|
||||
self.assertEqual("bot-bottle-agent:latest", calls[1][0])
|
||||
verify.assert_called_once_with(
|
||||
"bot-bottle-agent:latest", ("claude", "--version"),
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -153,6 +153,7 @@ class TestAgentFromPath(unittest.TestCase):
|
||||
slug="dev-abc12",
|
||||
agent_image="bot-bottle-claude:latest",
|
||||
agent_dockerfile_path="/repo/Dockerfile",
|
||||
agent_provider_template="claude",
|
||||
))
|
||||
|
||||
def test_uses_committed_artifact_when_present(self):
|
||||
@@ -185,6 +186,7 @@ class TestAgentFromPath(unittest.TestCase):
|
||||
ensure.assert_called_once_with(
|
||||
"bot-bottle-claude:latest",
|
||||
dockerfile="/repo/Dockerfile",
|
||||
smoke_test=("claude", "--version"),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user