aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorakbash <akbash@herdr.dev>2026-08-25 22:38:14 +0300
committerGitHub <noreply@github.com>2026-08-25 22:38:14 +0300
commitda5357d23f8450d4609f72d079876d7d439ef5a0 (patch)
tree2041bf59bf49475cb8c530afd80430b1dcd04fff /tests
parent13df1da9837d895b8e0d6bd50ea9fa37e76f525c (diff)
fix(cli): accept reordered agent report arguments (#2928)
refs #2926 Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/cli/panes.rs70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/cli/panes.rs b/tests/cli/panes.rs
index fb6cd3de..90b2bf79 100644
--- a/tests/cli/panes.rs
+++ b/tests/cli/panes.rs
@@ -568,6 +568,76 @@ fn pane_shell_gets_herdr_socket_and_pane_env() {
}
#[test]
+fn pane_agent_reports_accept_options_before_pane() {
+ 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 created = send_request(
+ &socket_path,
+ &format!(
+ r#"{{"id":"req_agent_report_1","method":"workspace.create","params":{{"cwd":"{}","focus":true}}}}"#,
+ base.display()
+ ),
+ );
+ let pane_id = created["result"]["root_pane"]["pane_id"]
+ .as_str()
+ .unwrap()
+ .to_string();
+
+ let state_report = run_cli(
+ &socket_path,
+ &[
+ "pane",
+ "report-agent",
+ "--source=custom:cli-test",
+ "--agent=cli-test",
+ "--state=working",
+ "--message=parsing=works",
+ &pane_id,
+ ],
+ );
+ assert!(
+ state_report.status.success(),
+ "stderr: {}",
+ String::from_utf8_lossy(&state_report.stderr)
+ );
+ assert!(state_report.stdout.is_empty());
+ assert!(state_report.stderr.is_empty());
+
+ let agent = run_cli_json(&socket_path, &["agent", "get", &pane_id]);
+ assert_eq!(agent["result"]["agent"]["agent"], "cli-test");
+ assert_eq!(agent["result"]["agent"]["agent_status"], "working");
+
+ let session_report = run_cli(
+ &socket_path,
+ &[
+ "pane",
+ "report-agent-session",
+ "--source=custom:cli-test",
+ "--agent=cli-test",
+ "--seq=1",
+ "--agent-session-id=session=1",
+ "--session-start-source=startup",
+ &pane_id,
+ ],
+ );
+ assert!(
+ session_report.status.success(),
+ "stderr: {}",
+ String::from_utf8_lossy(&session_report.stderr)
+ );
+ assert!(session_report.stdout.is_empty());
+ assert!(session_report.stderr.is_empty());
+
+ cleanup_spawned_herdr(herdr, base);
+}
+
+#[test]
fn pane_read_rejects_invalid_value_with_usage_error() {
// Invalid option values fail as CLI usage errors before any server
// contact: exit 2 with the plain parser message, not the old