aboutsummaryrefslogtreecommitdiff
path: root/tests/cli
diff options
context:
space:
mode:
authorJJ Liebig <jonathan.liebig@gmail.com>2026-08-11 02:24:02 +0200
committerGitHub <noreply@github.com>2026-08-11 03:24:02 +0300
commit7ae4b056a0ca478e584fa282c45b528134cc80c9 (patch)
tree5eb8da51353327f2bb1b7ef35f76cafe9b471dee /tests/cli
parent350f001320ec4a119f09c38157973126962a6121 (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/cli')
-rw-r--r--tests/cli/agent_transport.rs43
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);