use std::process::Command;
fn driller_bin() -> &'static str {
env!("CARGO_BIN_EXE_driller")
}
fn assert_clean_missing_file(args: &[&str], expected_path: &str) {
let output = Command::new(driller_bin()).args(args).output().expect("failed to invoke driller binary");
let stderr = String::from_utf8_lossy(&output.stderr);
assert_eq!(output.status.code(), Some(1), "expected exit code 1, got {:?}. stderr={stderr}", output.status.code());
assert!(stderr.contains("error: couldn't open"), "stderr should contain clean 'error: couldn't open' line, got: {stderr}");
assert!(stderr.contains(expected_path), "stderr should name the missing file '{expected_path}', got: {stderr}");
assert!(!stderr.contains("panicked"), "stderr should not mention 'panicked' (regression), got: {stderr}");
assert!(!stderr.contains("RUST_BACKTRACE"), "stderr should not advise RUST_BACKTRACE (regression), got: {stderr}");
}
#[test]
fn missing_benchmark_file_exits_cleanly() {
let missing = "/tmp/driller-integration-test-missing-benchmark.yml";
assert_clean_missing_file(&["--benchmark", missing], missing);
}