use std::path::{Path, PathBuf};
use supercode_harness::audit::{audit_dir, Corpus, Coverage};
use supercode_harness::{Role, Session};
fn fixture(name: &str) -> PathBuf {
Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests/fixtures/grok_audit")
.join(name)
}
#[test]
fn grok_user_audit_matches_the_loaders_replay_boundary() {
let report = audit_dir(&fixture("."), Corpus::Grok, None);
assert_eq!(report.files, 1, "ACP updates are not transcript records");
assert_eq!(report.parse_errors, 0);
assert_eq!(report.records["user"].0, Coverage::Normalized);
assert_eq!(report.records["user"].1.count, 3);
assert_eq!(report.records["user/system_event"].0, Coverage::Normalized);
assert_eq!(
report.records["user/injected_context:user_info"].0,
Coverage::Dropped
);
assert_eq!(
report.records["user/injected_context:system-reminder"].0,
Coverage::Dropped
);
assert_eq!(report.records["user/empty"].0, Coverage::Dropped);
assert_eq!(report.records["user/empty_query"].0, Coverage::Dropped);
assert_eq!(
report.records["user/injected_context:user_info/content/text"].0,
Coverage::Dropped
);
assert_eq!(
report.records["user/injected_context:system-reminder/content"].0,
Coverage::Dropped
);
assert_eq!(report.records["user/content/text"].0, Coverage::Normalized);
assert_eq!(report.records["user/content"].0, Coverage::Normalized);
assert_eq!(
report.records["user/content/<no-type>"].0,
Coverage::Normalized
);
let text = std::fs::read_to_string(fixture("chat_history.jsonl")).unwrap();
let loaded = Session::from_grok_str(&text).unwrap();
assert_eq!(loaded.messages.len(), 4);
assert_eq!(
loaded
.messages
.iter()
.filter(|message| message.role == Role::User)
.count(),
3
);
assert_eq!(
loaded
.messages
.iter()
.filter(|message| message.role == Role::System)
.count(),
1
);
}
#[test]
fn malformed_or_unknown_user_content_is_not_overclaimed() {
let root = std::env::temp_dir().join(format!(
"supercode-grok-audit-unknown-{}",
std::process::id()
));
std::fs::create_dir_all(&root).unwrap();
std::fs::write(
root.join("chat_history.jsonl"),
concat!(
r#"{"type":"user","content":[{"type":"image","data":"opaque"}]}"#,
"\n",
r#"{"type":"user"}"#,
"\n",
),
)
.unwrap();
let report = audit_dir(&root, Corpus::Grok, None);
assert_eq!(report.records["user/empty"].0, Coverage::Dropped);
assert_eq!(report.records["user/empty"].1.count, 2);
assert_eq!(
report.records["user/empty/content/image"].0,
Coverage::Dropped
);
assert_eq!(
report.records["user/empty/content:<missing>"].0,
Coverage::Dropped
);
std::fs::remove_dir_all(root).ok();
}