Skip to content

Commit 07e54c7

Browse files
committed
test(replay): assert all fixtures are referenced and parseable
1 parent 61d28dd commit 07e54c7

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

crates/rexos/tests/session_replay.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1205,3 +1205,53 @@ async fn replay_fixture_denies_a2a_discover_loopback_when_allow_private_false()
12051205

12061206
server.abort();
12071207
}
1208+
1209+
#[test]
1210+
#[serial]
1211+
fn replay_fixtures_are_valid_and_referenced_by_session_replay() {
1212+
let manifest_dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR"));
1213+
let fixture_dir = manifest_dir.join("tests/fixtures/replay");
1214+
let source_path = manifest_dir.join("tests/session_replay.rs");
1215+
1216+
let source = std::fs::read_to_string(&source_path)
1217+
.unwrap_or_else(|err| panic!("read {}: {err}", source_path.display()));
1218+
1219+
let mut fixture_names: Vec<String> = Vec::new();
1220+
for entry in std::fs::read_dir(&fixture_dir)
1221+
.unwrap_or_else(|err| panic!("read {}: {err}", fixture_dir.display()))
1222+
{
1223+
let entry = entry.expect("fixture dir entry");
1224+
let path = entry.path();
1225+
if path.extension().and_then(|ext| ext.to_str()) != Some("json") {
1226+
continue;
1227+
}
1228+
1229+
let file_name = path
1230+
.file_name()
1231+
.expect("fixture file name")
1232+
.to_string_lossy()
1233+
.to_string();
1234+
let raw = std::fs::read_to_string(&path)
1235+
.unwrap_or_else(|err| panic!("read {}: {err}", path.display()));
1236+
1237+
let _: Vec<serde_json::Value> = serde_json::from_str(&raw)
1238+
.unwrap_or_else(|err| panic!("fixture `{file_name}` must be a JSON array: {err}"));
1239+
1240+
fixture_names.push(file_name);
1241+
}
1242+
1243+
fixture_names.sort();
1244+
assert!(
1245+
!fixture_names.is_empty(),
1246+
"expected fixtures under {}",
1247+
fixture_dir.display()
1248+
);
1249+
1250+
for name in fixture_names {
1251+
let needle = format!("fixtures/replay/{name}");
1252+
assert!(
1253+
source.contains(&needle),
1254+
"fixture `{name}` exists on disk but is not referenced by session_replay.rs via `{needle}`"
1255+
);
1256+
}
1257+
}

0 commit comments

Comments
 (0)