aboutsummaryrefslogtreecommitdiff
path: root/tests/cli_wrapper.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 01:41:16 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-17 01:41:16 +0300
commite4de58b37f58d59d146158239ed218a8accd5c3c (patch)
tree6bb35b8c9aaec969110ff51a58814dd8099617c0 /tests/cli_wrapper.rs
parent86adf88351e17c6a11cac253714b169eac0db233 (diff)
feat: add agent start for server-owned terminals
Diffstat (limited to 'tests/cli_wrapper.rs')
-rw-r--r--tests/cli_wrapper.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/cli_wrapper.rs b/tests/cli_wrapper.rs
index 4302687e..0cf60c5d 100644
--- a/tests/cli_wrapper.rs
+++ b/tests/cli_wrapper.rs
@@ -1220,6 +1220,63 @@ fn tab_management_commands_work() {
}
#[test]
+fn agent_start_command_works() {
+ let base = unique_test_dir();
+ let config_home = base.join("config");
+ let runtime_dir = base.join("runtime");
+ let socket_path = runtime_dir.join("herdr.sock");
+
+ let herdr = spawn_herdr(&config_home, &runtime_dir, &socket_path);
+ wait_for_socket(&socket_path, Duration::from_secs(5));
+
+ let started = run_cli_json(
+ &socket_path,
+ &[
+ "agent",
+ "start",
+ "main",
+ "--cwd",
+ base.to_str().unwrap(),
+ "--",
+ "/bin/sh",
+ "-c",
+ "printf cli-agent-start-ok; sleep 2",
+ ],
+ );
+ assert_eq!(started["result"]["type"], "agent_started");
+ assert_eq!(started["result"]["agent"]["name"], "main");
+ assert_eq!(started["result"]["argv"][0], "/bin/sh");
+ let terminal_id = started["result"]["agent"]["terminal_id"]
+ .as_str()
+ .unwrap()
+ .to_string();
+
+ let listed = run_cli_json(&socket_path, &["agent", "list"]);
+ assert_eq!(listed["result"]["agents"][0]["terminal_id"], terminal_id);
+ assert_eq!(listed["result"]["agents"][0]["name"], "main");
+
+ let duplicate = run_cli(
+ &socket_path,
+ &[
+ "agent",
+ "start",
+ "main",
+ "--cwd",
+ base.to_str().unwrap(),
+ "--",
+ "/bin/sh",
+ "-c",
+ "true",
+ ],
+ );
+ assert!(!duplicate.status.success());
+ let duplicate_json: serde_json::Value = serde_json::from_slice(&duplicate.stderr).unwrap();
+ assert_eq!(duplicate_json["error"]["code"], "agent_name_taken");
+
+ cleanup_spawned_herdr(herdr, base);
+}
+
+#[test]
fn agent_commands_work() {
let base = unique_test_dir();
let config_home = base.join("config");