use super::f_fsid_text;
use std::path::Path;
fn stat_text(path: &Path) -> String {
let output: std::process::Output = std::process::Command::new("stat")
.arg("--file-system")
.arg("--format=%i")
.arg(path)
.output()
.expect("stat starts");
assert!(output.status.success(), "stat refused {}", path.display());
return String::from_utf8_lossy(output.stdout.as_slice()).trim().to_string();
}
#[test]
fn the_text_equals_what_stat_prints() {
let package: &Path = Path::new(env!("CARGO_MANIFEST_DIR"));
for path in [package, Path::new("/"), Path::new("/proc"), Path::new("/dev")] {
if !path.exists() {
println!("skipped: {} is absent here", path.display());
continue;
}
assert_eq!(f_fsid_text(path).as_deref(), Some(stat_text(path).as_str()), "{}", path.display());
}
}
#[test]
fn a_refused_path_has_no_text() {
assert_eq!(f_fsid_text(Path::new("/nonexistent/entry/for/statfs")), None);
assert_eq!(f_fsid_text(Path::new("/pro\0c")), None);
}
#[test]
fn the_text_is_plain_lowercase_hexadecimal() {
let text: String = f_fsid_text(Path::new(env!("CARGO_MANIFEST_DIR"))).expect("a text");
assert!(!text.is_empty());
assert!(text.chars().all(|character: char| { return character.is_ascii_digit() || ('a'..='f').contains(&character); }), "{text}");
assert!(text == "0" || !text.starts_with('0'), "{text}");
}