From 3b549acb3eaf3f23bb77f3c6bd9628b5c0cf2f54 Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Thu, 4 Dec 2025 16:59:26 -0800 Subject: [PATCH] jsonl-logs-feedback --- codex-rs/Cargo.lock | 1 + codex-rs/feedback/Cargo.toml | 1 + codex-rs/feedback/src/lib.rs | 9 ++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 90d6a40ee2..cd01290709 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -1315,6 +1315,7 @@ dependencies = [ "codex-protocol", "pretty_assertions", "sentry", + "serde_json", "tracing-subscriber", ] diff --git a/codex-rs/feedback/Cargo.toml b/codex-rs/feedback/Cargo.toml index 0697704072..485fa2f33b 100644 --- a/codex-rs/feedback/Cargo.toml +++ b/codex-rs/feedback/Cargo.toml @@ -12,3 +12,4 @@ tracing-subscriber = { workspace = true } [dev-dependencies] pretty_assertions = { workspace = true } +serde_json = { workspace = true } diff --git a/codex-rs/feedback/src/lib.rs b/codex-rs/feedback/src/lib.rs index 191d73b15d..c6f40f328d 100644 --- a/codex-rs/feedback/src/lib.rs +++ b/codex-rs/feedback/src/lib.rs @@ -303,13 +303,20 @@ mod tests { #[test] fn logs_attachment_preserves_filename_and_mime() { + let sample = b"{\"event\":\"test\"}\n{\"event\":\"test2\"}"; let snapshot = CodexLogSnapshot { - bytes: br#"{"event":"test"}"#.to_vec(), + bytes: sample.to_vec(), thread_id: "thread-123".to_string(), }; let attachment = snapshot.logs_attachment(); pretty_assertions::assert_eq!(attachment.filename, "codex-logs.jsonl"); pretty_assertions::assert_eq!(attachment.content_type.as_deref(), Some("text/plain")); pretty_assertions::assert_eq!(attachment.buffer, snapshot.bytes); + let parsed: Vec<_> = attachment + .buffer + .split(|b| *b == b'\n') + .map(|line| serde_json::from_slice::(line).unwrap()) + .collect(); + pretty_assertions::assert_eq!(parsed.len(), 2); } }