use std::process::Command;
fn filament_bin() -> std::path::PathBuf {
let mut path = std::env::current_exe().unwrap();
path.pop(); path.pop(); path.push("filament");
path
}
#[test]
fn man_page_is_valid_roff() {
let bin = filament_bin();
let output = Command::new(&bin)
.arg("man")
.output()
.expect("failed to execute filament");
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(
stdout.contains(".TH filament"),
"Expected '.TH filament' in man page output, got: {}",
&stdout[..stdout.len().min(200)]
);
assert!(
stdout.contains(".SH NAME"),
"Expected '.SH NAME' section in man page",
);
assert!(
stdout.contains(".SH SYNOPSIS"),
"Expected '.SH SYNOPSIS' section in man page",
);
}
#[test]
fn man_page_can_be_written_to_file() {
let bin = filament_bin();
let tmp_dir = std::env::temp_dir().join("filament-man-install-test");
std::fs::create_dir_all(&tmp_dir).unwrap();
let man_path = tmp_dir.join("filament.1");
let output = Command::new(&bin)
.arg("man")
.output()
.expect("failed to execute filament");
std::fs::write(&man_path, &output.stdout).unwrap();
let content = std::fs::read_to_string(&man_path).unwrap();
assert!(
content.contains(".TH filament"),
"Written man page should contain '.TH filament'",
);
std::fs::remove_dir_all(&tmp_dir).ok();
}