mod common;
use common::*;
#[test]
fn test_root_help() {
let assert = crush_cmd().arg("--help").assert().success();
let stdout = String::from_utf8(assert.get_output().stdout.clone()).unwrap();
assert!(stdout.contains("compress"), "Should list compress command");
assert!(
stdout.contains("decompress"),
"Should list decompress command"
);
assert!(stdout.contains("inspect"), "Should list inspect command");
assert!(stdout.contains("config"), "Should list config command");
assert!(stdout.contains("plugins"), "Should list plugins command");
assert!(
stdout.contains("Usage:") || stdout.contains("USAGE:"),
"Should show usage"
);
assert!(
stdout.contains("compression") || stdout.contains("Crush"),
"Should show description"
);
}
#[test]
fn test_compress_help() {
let assert = crush_cmd().arg("compress").arg("--help").assert().success();
let stdout = String::from_utf8(assert.get_output().stdout.clone()).unwrap();
assert!(stdout.contains("Compress"), "Should mention compress");
assert!(
stdout.contains("--output") || stdout.contains("-o"),
"Should show output option"
);
assert!(
stdout.contains("--plugin") || stdout.contains("-p"),
"Should show plugin option"
);
assert!(
stdout.contains("--level") || stdout.contains("-l"),
"Should show level option"
);
assert!(
stdout.contains("--force") || stdout.contains("-f"),
"Should show force option"
);
assert!(
stdout.contains("Usage:") || stdout.contains("USAGE:"),
"Should show usage"
);
assert!(
stdout.contains("<FILE>") || stdout.contains("[FILE]") || stdout.contains("INPUT"),
"Should show file argument"
);
}
#[test]
fn test_invalid_command_suggestion() {
let assert = crush_cmd()
.arg("compres") .assert()
.failure();
let stderr = String::from_utf8(assert.get_output().stderr.clone()).unwrap();
assert!(
stderr.contains("unrecognized") || stderr.contains("invalid") || stderr.contains("unknown"),
"Should indicate invalid command"
);
assert!(!stderr.is_empty(), "Should show error message");
}