diff options
Diffstat (limited to 'tests/cli')
| -rw-r--r-- | tests/cli/hooks.rs | 31 |
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] |
