//! An argument that is not UTF-8 is a usage error, not a panic (M3a review finding 7). use std::ffi::OsStr; use std::os::unix::ffi::OsStrExt; use std::process::Command; #[test] fn an_argument_that_is_not_utf8_is_a_usage_error() { let out = Command::new(env!("CARGO_BIN_EXE_bxctl")) .args([OsStr::new("approve"), OsStr::from_bytes(b"4\xff")]) .output() .unwrap(); assert_eq!(out.status.code(), Some(2)); let err = String::from_utf8_lossy(&out.stderr); assert!( err.starts_with("bxctl: an argument is not valid UTF-8"), "{err}" ); }