diff --git a/tests/unit/test_cli_start_headless.py b/tests/unit/test_cli_start_headless.py index f0ec60a..11d3c05 100644 --- a/tests/unit/test_cli_start_headless.py +++ b/tests/unit/test_cli_start_headless.py @@ -77,26 +77,48 @@ class TestCmdStartHeadless(unittest.TestCase): # -- no TUI in headless -------------------------------------------- def test_headless_fires_no_pickers(self): - rc = start_mod.cmd_start(["--headless", "researcher", "--bottle", "claude"]) + rc = start_mod.cmd_start( + ["--headless", "researcher", "--bottle", "claude", "--prompt", "Do it"] + ) self.assertEqual(0, rc) self._agent_picker.assert_not_called() self._bottle_picker.assert_not_called() self._modal.assert_not_called() def test_headless_assume_yes_forwarded(self): - start_mod.cmd_start(["--headless", "researcher", "--bottle", "claude"]) + start_mod.cmd_start( + ["--headless", "researcher", "--bottle", "claude", "--prompt", "Do it"] + ) self.assertTrue(self._launch_mock.call_args[1]["assume_yes"]) + # -- prompt -------------------------------------------------------- + + def test_headless_without_prompt_dies(self): + with self.assertRaises(Die): + start_mod.cmd_start(["--headless", "researcher", "--bottle", "claude"]) + self._launch_mock.assert_not_called() + + def test_headless_prompt_forwarded_to_launch(self): + start_mod.cmd_start( + ["--headless", "researcher", "--bottle", "claude", + "--prompt", "Implement issue #42"] + ) + self.assertEqual( + "Implement issue #42", + self._launch_mock.call_args[1]["headless_prompt_text"], + ) + # -- bottle resolution --------------------------------------------- def test_explicit_bottles_forwarded_in_order(self): start_mod.cmd_start( - ["--headless", "researcher", "--bottle", "dev", "--bottle", "claude"] + ["--headless", "researcher", "--bottle", "dev", "--bottle", "claude", + "--prompt", "Do it"] ) self.assertEqual(("dev", "claude"), self._spec().bottle_names) def test_omitted_bottle_falls_back_to_agent_default(self): - start_mod.cmd_start(["--headless", "implementer"]) + start_mod.cmd_start(["--headless", "implementer", "--prompt", "Do it"]) self.assertEqual(("claude",), self._spec().bottle_names) def test_no_bottle_and_no_default_dies(self): @@ -105,7 +127,9 @@ class TestCmdStartHeadless(unittest.TestCase): "bot_bottle.cli.start.ManifestIndex.resolve", return_value=manifest ): with self.assertRaises(Die): - start_mod.cmd_start(["--headless", "researcher"]) + start_mod.cmd_start( + ["--headless", "researcher", "--prompt", "Do it"] + ) self._launch_mock.assert_not_called() # -- agent resolution ---------------------------------------------- @@ -118,19 +142,23 @@ class TestCmdStartHeadless(unittest.TestCase): def test_unknown_agent_raises_manifest_error(self): self._manifest.require_agent.side_effect = ManifestError("agent 'x' not defined") with self.assertRaises(ManifestError): - start_mod.cmd_start(["--headless", "x", "--bottle", "claude"]) + start_mod.cmd_start( + ["--headless", "x", "--bottle", "claude", "--prompt", "Do it"] + ) self._launch_mock.assert_not_called() # -- label / color ------------------------------------------------- def test_label_defaults_to_agent_name(self): - start_mod.cmd_start(["--headless", "researcher", "--bottle", "claude"]) + start_mod.cmd_start( + ["--headless", "researcher", "--bottle", "claude", "--prompt", "Do it"] + ) self.assertEqual("researcher", self._spec().label) def test_explicit_label_and_color_forwarded(self): start_mod.cmd_start( ["--headless", "researcher", "--bottle", "claude", - "--label", "nightly", "--color", "green"] + "--label", "nightly", "--color", "green", "--prompt", "Do it"] ) spec = self._spec() self.assertEqual("nightly", spec.label) @@ -141,14 +169,17 @@ class TestCmdStartHeadless(unittest.TestCase): "bot_bottle.cli.start.enumerate_active_agents", return_value=[_active_agent("researcher")], ): - start_mod.cmd_start(["--headless", "researcher", "--bottle", "claude"]) + start_mod.cmd_start( + ["--headless", "researcher", "--bottle", "claude", "--prompt", "Do it"] + ) self.assertEqual("researcher-2", self._spec().label) # -- backend wiring ------------------------------------------------ def test_backend_flag_forwarded(self): start_mod.cmd_start( - ["--headless", "--backend=docker", "researcher", "--bottle", "claude"] + ["--headless", "--backend=docker", "researcher", "--bottle", "claude", + "--prompt", "Do it"] ) self.assertEqual("docker", self._launch_mock.call_args[1]["backend_name"])