diff --git a/tests/cli.rs b/tests/cli.rs new file mode 100644 index 0000000..2be6424 --- /dev/null +++ b/tests/cli.rs @@ -0,0 +1,24 @@ +//! End-to-end CLI tests that run the actual built binary. + +use std::process::Command; + +/// `--help` must exit successfully and print the usage/options. Run with +/// `cargo test -- --nocapture` to see the help text in the test output. +#[test] +fn help_shows_usage_and_options() { + let output = Command::new(env!("CARGO_BIN_EXE_fsdecrypt")) + .arg("--help") + .output() + .expect("failed to run fsdecrypt --help"); + + let stdout = String::from_utf8_lossy(&output.stdout); + println!("\n--- fsdecrypt --help ---\n{stdout}"); + + assert!(output.status.success(), "--help should exit 0"); + assert!(stdout.contains("Usage"), "help should show a usage line"); + assert!(stdout.contains("--no-extract"), "help should list options"); + assert!( + stdout.contains("decryptor for some SEGA containers"), + "help should show the about text" + ); +}