diff options
| author | JJ Liebig <jonathan.liebig@gmail.com> | 2026-08-11 02:24:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-11 03:24:02 +0300 |
| commit | 7ae4b056a0ca478e584fa282c45b528134cc80c9 (patch) | |
| tree | 5eb8da51353327f2bb1b7ef35f76cafe9b471dee /tests | |
| parent | 350f001320ec4a119f09c38157973126962a6121 (diff) | |
fix: wait for agent prompt readiness (#2537)
* fix: wait for agent prompt readiness
refs #2410
* fix: return pane updates after tab bar command
refs #2410
---------
Co-authored-by: Can Celik <ogulcancelik@gmail.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/cli/agent_transport.rs | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/tests/cli/agent_transport.rs b/tests/cli/agent_transport.rs index 42e67828..85419e90 100644 --- a/tests/cli/agent_transport.rs +++ b/tests/cli/agent_transport.rs @@ -1,7 +1,7 @@ use super::harness::*; #[test] -fn agent_start_accepts_durable_readiness_during_detection_gap() { +fn agent_start_waits_through_unknown_then_rejects_blocked() { let base = unique_test_dir(); fs::create_dir_all(&base).unwrap(); let socket_path = base.join("herdr.sock"); @@ -55,6 +55,32 @@ fn agent_start_accepts_durable_readiness_during_detection_gap() { ) .unwrap(); get_stream.flush().unwrap(); + + let (mut get_stream, get_line) = accept_fake_cli_operation(&listener); + let get: serde_json::Value = serde_json::from_str(&get_line).unwrap(); + assert_eq!(get["method"], "agent.get"); + assert_eq!(get["params"]["target"], "reviewer"); + writeln!( + get_stream, + "{}", + serde_json::json!({ + "id": get["id"], + "result": { + "type": "agent_info", + "agent": { + "agent": "opencode", + "agent_status": "blocked", + "interactive_ready": true, + "launch_pending": false, + "name": "reviewer", + "pane_id": "w1:p1", + "terminal_id": "term_1" + } + } + }) + ) + .unwrap(); + get_stream.flush().unwrap(); }); let started = run_cli( @@ -63,17 +89,10 @@ fn agent_start_accepts_durable_readiness_during_detection_gap() { "agent", "start", "reviewer", "--kind", "opencode", "--pane", "w1:p1", ], ); - assert!( - started.status.success(), - "stderr: {}", - String::from_utf8_lossy(&started.stderr) - ); - let started: serde_json::Value = serde_json::from_slice(&started.stdout).unwrap(); - assert_eq!(started["result"]["type"], "agent_started"); - assert_eq!(started["result"]["agent"]["name"], "reviewer"); - assert!(started["result"]["agent"]["interactive_ready"] - .as_bool() - .unwrap()); + assert_eq!(started.status.code(), Some(1)); + assert!(started.stdout.is_empty()); + let error: serde_json::Value = serde_json::from_slice(&started.stderr).unwrap(); + assert_eq!(error["error"]["code"], "agent_not_ready"); server.join().unwrap(); cleanup_test_base(&base); |
