use std::process::Command;
fn cleanlib_bin() -> std::path::PathBuf {
let p = std::env!("CARGO_BIN_EXE_cleanlib");
std::path::PathBuf::from(p)
}
#[test]
fn no_subcommand_exits_non_zero() {
let output = Command::new(cleanlib_bin())
.output()
.expect("failed to invoke cleanlib bin");
assert!(
!output.status.success(),
"expected non-zero exit for bare `cleanlib`; got success.\nstderr: {}",
String::from_utf8_lossy(&output.stderr)
);
}
#[test]
fn no_subcommand_prints_help_to_stderr() {
let output = Command::new(cleanlib_bin())
.output()
.expect("failed to invoke cleanlib bin");
let stderr = String::from_utf8_lossy(&output.stderr);
assert!(
stderr.contains("Usage:") || stderr.contains("USAGE:"),
"expected help output on stderr; got: {stderr}"
);
}
#[test]
fn help_flag_prints_to_stdout_and_exits_zero() {
let output = Command::new(cleanlib_bin())
.arg("--help")
.output()
.expect("failed to invoke cleanlib --help");
assert!(output.status.success(), "expected --help to succeed");
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(
stdout.contains("Usage:") || stdout.contains("USAGE:"),
"expected Usage header on stdout for --help"
);
}