diff --git a/bot_bottle/backend/resolve_common.py b/bot_bottle/backend/resolve_common.py index c316173..30ce58c 100644 --- a/bot_bottle/backend/resolve_common.py +++ b/bot_bottle/backend/resolve_common.py @@ -34,7 +34,8 @@ from . import BottleSpec def mint_slug(spec: BottleSpec) -> str: """Return the bottle identity: the recorded identity for a resume, or a freshly minted one for a new start.""" - return spec.identity or bottle_identity(spec.agent_name) + name = spec.label or spec.agent_name + return spec.identity or bottle_identity(name) def write_launch_metadata( diff --git a/tests/unit/test_backend_prepare.py b/tests/unit/test_backend_prepare.py index 3fab237..47bddc2 100644 --- a/tests/unit/test_backend_prepare.py +++ b/tests/unit/test_backend_prepare.py @@ -16,6 +16,7 @@ from bot_bottle import bottle_state from bot_bottle import supervise from bot_bottle.backend import BottleSpec from bot_bottle.backend.docker import DockerBottleBackend +from bot_bottle.backend.resolve_common import mint_slug from bot_bottle.backend.smolmachines import SmolmachinesBottleBackend from bot_bottle.manifest import Manifest @@ -115,5 +116,34 @@ class TestSmolmachinesPrepare(_FakeStateMixin, unittest.TestCase): ) +class TestMintSlug(unittest.TestCase): + def _spec(self, *, label: str = "", identity: str = "") -> BottleSpec: + manifest = _manifest() + return BottleSpec( + manifest=manifest, + agent_name="demo", + copy_cwd=False, + user_cwd="/tmp", + label=label, + identity=identity, + ) + + def test_no_label_uses_agent_name_as_prefix(self) -> None: + slug = mint_slug(self._spec(label="")) + self.assertTrue(slug.startswith("demo-"), slug) + + def test_label_used_as_slug_prefix(self) -> None: + slug = mint_slug(self._spec(label="my-run")) + self.assertTrue(slug.startswith("my-run-"), slug) + + def test_label_with_spaces_slugified(self) -> None: + slug = mint_slug(self._spec(label="My Feature Run")) + self.assertTrue(slug.startswith("my-feature-run-"), slug) + + def test_identity_takes_precedence_over_label(self) -> None: + slug = mint_slug(self._spec(label="my-run", identity="fixed-id")) + self.assertEqual("fixed-id", slug) + + if __name__ == "__main__": unittest.main()