diff --git a/tests/test_agent_exec.py b/tests/test_agent_exec.py index b6747a28..1e4d6319 100644 --- a/tests/test_agent_exec.py +++ b/tests/test_agent_exec.py @@ -185,6 +185,12 @@ def _write_fake_worker( return path +def _codex_help() -> str: + from scripts.agent_exec_adapters import _REQUIRED_HELP_MARKERS + + return "\n".join(_REQUIRED_HELP_MARKERS["codex"]) + "\n" + + class AgentExecControllerTests(unittest.TestCase): def setUp(self) -> None: self.tmp = tempfile.TemporaryDirectory(prefix="agent-exec-ctrl-") @@ -589,13 +595,27 @@ class AgentExecControllerTests(unittest.TestCase): _write_fake_worker( self.bindir, "codex", + help_text=_codex_help(), body=textwrap.dedent( f"""\ + if [ "$1" = "exec" ] && [ "$2" = "--help" ]; then + exec "$0" --help + fi printf 'codex\\n' >> "{launches}" - workspace="$1" - result="$3" - mkdir -p "$workspace/src" - printf 'final\\n' > "$workspace/src/marker.txt" + result="" + prev="" + for arg in "$@"; do + if [ "$prev" = "--output-last-message" ]; then + result="$arg" + fi + prev="$arg" + done + if [ -z "$result" ]; then + echo "missing --output-last-message" >&2 + exit 2 + fi + mkdir -p src + printf 'final\\n' > src/marker.txt printf '%s\\n' '{{"terminal_status":"completed","summary":"done","changed_files":["src/marker.txt"],"evidence":[],"scope_expansion":null}}' > "$result" exit 0 """ @@ -604,7 +624,7 @@ class AgentExecControllerTests(unittest.TestCase): self._configure( profiles={ "regular": {"adapter": "custom", "executable": "regular"}, - "codex": {"adapter": "custom", "executable": "codex"}, + "codex": {"adapter": "codex", "executable": "codex", "model": "auto"}, }, role_order=["regular"], max_attempts_per_profile=3, @@ -614,6 +634,7 @@ class AgentExecControllerTests(unittest.TestCase): self.assertEqual(loaded.execution.max_attempts_per_profile, 3) self.assertEqual(loaded.execution.emergency_profile, "codex") self.assertIn("codex", loaded.profiles) + self.assertEqual(loaded.profiles["codex"].adapter, "codex") for role_names in loaded.roles.values(): self.assertNotIn("codex", role_names) unit = _write_unit(self.root / "unit.json") @@ -655,6 +676,7 @@ class AgentExecControllerTests(unittest.TestCase): line for line in launches.read_text(encoding="utf-8").splitlines() if line ] self.assertEqual(observed, ["regular", "regular", "regular", "codex"]) + self.assertEqual(data["attempts"][-1]["summary"], "done") self.assertEqual(proc.returncode, agent_exec.EXIT_SUCCESS, proc.stderr + proc.stdout) self._assert_canonical_untouched()