aboutsummaryrefslogtreecommitdiff
path: root/tests/cli
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cli')
-rw-r--r--tests/cli/hooks.rs31
1 files changed, 29 insertions, 2 deletions
diff --git a/tests/cli/hooks.rs b/tests/cli/hooks.rs
index b2edd3e7..21e7036b 100644
--- a/tests/cli/hooks.rs
+++ b/tests/cli/hooks.rs
@@ -83,6 +83,7 @@ fn run_shell_hook_with_env(
.env("HERDR_ENV", "1")
.env("HERDR_SOCKET_PATH", &socket_path)
.env("HERDR_PANE_ID", "p_test")
+ .env_remove("CODEX_THREAD_ID")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::piped());
@@ -150,16 +151,42 @@ fn claude_hook_reports_session_id_from_stdin() {
}
#[test]
-fn codex_hook_reports_session_id_from_stdin() {
+fn codex_hook_reports_persisted_root_session_and_ignores_ephemeral_or_nested_sessions() {
let request = run_codex_hook(
"session",
- r#"{"hook_event_name":"SessionStart","session_id":"codex-session"}"#,
+ r#"{"hook_event_name":"SessionStart","session_id":"codex-session","transcript_path":"/tmp/codex-session.jsonl"}"#,
)
.expect("codex hook should report session identity");
assert_eq!(request["method"], "pane.report_agent_session");
assert_eq!(request["params"]["agent_session_id"], "codex-session");
assert!(request["params"].get("state").is_none());
+
+ let matching_request = run_shell_hook_with_env(
+ "src/integration/assets/codex/herdr-agent-state.sh",
+ &["session"],
+ r#"{"hook_event_name":"SessionStart","session_id":"codex-session","transcript_path":"/tmp/codex-session.jsonl"}"#,
+ &[("CODEX_THREAD_ID", "codex-session")],
+ )
+ .expect("matching inherited session should still report");
+ assert_eq!(
+ matching_request["params"]["agent_session_id"],
+ "codex-session"
+ );
+
+ assert!(run_codex_hook(
+ "session",
+ r#"{"hook_event_name":"SessionStart","session_id":"side-session","transcript_path":null}"#,
+ )
+ .is_none());
+
+ assert!(run_shell_hook_with_env(
+ "src/integration/assets/codex/herdr-agent-state.sh",
+ &["session"],
+ r#"{"hook_event_name":"SessionStart","session_id":"nested-session","transcript_path":"/tmp/nested-session.jsonl"}"#,
+ &[("CODEX_THREAD_ID", "parent-session")],
+ )
+ .is_none());
}
#[test]