aboutsummaryrefslogtreecommitdiff
path: root/tests/cli
diff options
context:
space:
mode:
authorJJ Liebig <jonathan.liebig@gmail.com>2026-07-28 03:13:35 +0200
committerGitHub <noreply@github.com>2026-07-28 04:13:35 +0300
commit1491b7dd9c992ef0ad2b763f3e450befaf25c47f (patch)
treec2dac451236c0f59c34f8d850ef042d41bb6f32f /tests/cli
parentb499e611b6a983ce6077da555ad55c1fd58b1387 (diff)
fix: ignore nested codex session reports (#1927)
* fix: ignore nested codex session reports refs #1789 * test: cover matching codex thread id --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
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]