#[test]
fn crate_source_never_references_process_command() {
let src_dir = concat!(env!("CARGO_MANIFEST_DIR"), "/src");
let forbidden = ["process::Command", "Command::new", "Stdio"];
for entry in walk(src_dir) {
let contents = std::fs::read_to_string(&entry).unwrap();
for needle in forbidden {
assert!(
!contents.contains(needle),
"found a process-spawning call (`{needle}`) in {entry:?} — fslite-cli must never shell out"
);
}
}
}
fn walk(dir: &str) -> Vec<std::path::PathBuf> {
let mut files = Vec::new();
for entry in std::fs::read_dir(dir).unwrap() {
let entry = entry.unwrap();
let path = entry.path();
if path.is_dir() {
files.extend(walk(path.to_str().unwrap()));
} else if path.extension().is_some_and(|ext| ext == "rs") {
files.push(path);
}
}
files
}