diff --git a/packages/mosaic/src/mutator-gate/runtime_tools_unittest.py b/packages/mosaic/src/mutator-gate/runtime_tools_unittest.py index 8dcaa8b..e809802 100644 --- a/packages/mosaic/src/mutator-gate/runtime_tools_unittest.py +++ b/packages/mosaic/src/mutator-gate/runtime_tools_unittest.py @@ -100,6 +100,31 @@ class LaunchRuntimeTest(unittest.TestCase): self.assertEqual(environment["MOSAIC_LEASE_RUNTIME"], "claude") self.assertEqual(environment["PRESERVED"], "yes") + def test_dangerous_claude_mode_is_owned_and_injected_by_the_wrapper(self) -> None: + executed: list[tuple[str, list[str], dict[str, str]]] = [] + result = LAUNCHER.main( + ["--runtime", "claude", "--dangerous", "--", "claude", "-p", "hello"], + environ={"MOSAIC_LEASE_BROKER_SOCKET": "/broker"}, + request=lambda *_args: {"ok": True, "session_id": "e" * 64}, + execute=lambda *args: executed.append(args), + ) + self.assertEqual(result, 0) + self.assertEqual( + executed[0][1], + ["claude", "--dangerously-skip-permissions", "-p", "hello"], + ) + + with redirect_stderr(io.StringIO()): + self.assertEqual( + LAUNCHER.main( + ["--runtime", "pi", "--dangerous", "--", "pi"], + environ={"MOSAIC_LEASE_BROKER_SOCKET": "/broker"}, + request=lambda *_args: {"ok": True, "session_id": "e" * 64}, + execute=lambda *_args: self.fail("invalid dangerous runtime executed"), + ), + 64, + ) + def test_command_without_separator_is_forwarded_unchanged(self) -> None: executed: list[tuple[str, list[str], dict[str, str]]] = [] result = LAUNCHER.main(