use std::process::Command; #[test] fn eval_lexical_runs_and_reports_billable_recall() { let out = Command::new(env!("CARGO_BIN_EXE_alpha-id")) .args(["eval", "--mode", "lexical", "--cases", "30"]) .arg("--config").arg("config/default.toml") .output().unwrap(); assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr)); let s = String::from_utf8_lossy(&out.stdout); assert!(s.contains("BillableRecall@10=")); } #[test] fn eval_is_deterministic_same_seed() { let run = || { let out = Command::new(env!("CARGO_BIN_EXE_alpha-id")) .args(["eval", "--mode", "lexical", "--cases", "40", "--seed", "42"]) .arg("--config").arg("config/default.toml") .output().unwrap(); assert!(out.status.success(), "stderr: {}", String::from_utf8_lossy(&out.stderr)); String::from_utf8(out.stdout).unwrap() }; let first = run(); let second = run(); assert!(!first.is_empty(), "eval produced no output"); assert_eq!(first, second, "eval output differed between runs with identical args (seed=42):\n run1: {first:?}\n run2: {second:?}"); }