use std::process::Command;
fn mkit_bin() -> &'static str {
env!("CARGO_BIN_EXE_mkit")
}
#[test]
fn version_stdout_is_byte_exact() {
let output = Command::new(mkit_bin())
.arg("version")
.output()
.expect("spawn `mkit version`");
assert!(output.status.success(), "`mkit version` must exit 0");
let expected = format!("mkit {}\n", env!("CARGO_PKG_VERSION"));
let actual = String::from_utf8(output.stdout).expect("stdout is utf-8");
assert_eq!(
actual, expected,
"`mkit version` stdout contract broken — see docs/CLI.md"
);
assert!(
output.stderr.is_empty(),
"`mkit version` must not write to stderr, got: {:?}",
String::from_utf8_lossy(&output.stderr)
);
}
#[test]
fn version_flags_match_subcommand_byte_for_byte() {
let canonical = Command::new(mkit_bin())
.arg("version")
.output()
.expect("spawn `mkit version`");
assert!(canonical.status.success(), "`mkit version` must exit 0");
for flag in ["--version", "-V"] {
let out = Command::new(mkit_bin())
.arg(flag)
.output()
.unwrap_or_else(|e| panic!("spawn `mkit {flag}`: {e}"));
assert!(out.status.success(), "`mkit {flag}` must exit 0");
assert_eq!(
out.stdout, canonical.stdout,
"`mkit {flag}` stdout must byte-match `mkit version`"
);
assert!(
out.stderr.is_empty(),
"`mkit {flag}` must not write to stderr, got: {:?}",
String::from_utf8_lossy(&out.stderr)
);
}
}