From 0a7b63331015e01b56507d1ffbedee0fc5dd152b Mon Sep 17 00:00:00 2001 From: Jujuforce Date: Sun, 28 Jun 2026 12:01:46 +0200 Subject: [PATCH] test: add a CLI --help integration test Runs the built binary with --help and asserts it exits 0 and prints the usage, options, and about text (visible via cargo test -- --nocapture). Co-Authored-By: Claude Opus 4.8 --- tests/cli.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/cli.rs 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" + ); +}