use clap::Parser;
use fif::parameters::Parameters;
#[test]
fn rejects_bad_args() {
use assert_cmd::Command;
let tests = [
vec!["fif", "-abcdefghijklmnopqrstuvwxyz"],
vec!["fif", "-E"],
vec!["fif", "-E", "pebis"],
vec!["fif", "-X", "pebis"],
vec!["fif", "-e", ",,,,,"],
vec!["fif", "-x", ",,,,,"],
vec!["fif", "-j", "-1"],
vec!["fif", "--prompt", "always"],
vec!["fif", "--overwrite"],
];
for test in &tests {
assert!(Parameters::try_parse_from(test).is_err(), "Failed to reject {test:?}");
let mut cmd = Command::cargo_bin("fif").unwrap();
cmd.args(test).assert().failure();
}
}
#[test]
fn accepts_good_args() {
use assert_cmd::Command;
let tests = [
vec!["-V"],
vec!["--version"],
vec!["-E", "images", "--version"],
vec!["-h"],
vec!["--help"],
vec!["dir_name", "--version"],
];
for test in &tests {
let mut cmd = Command::cargo_bin("fif").unwrap();
cmd.args(test).assert().success();
}
}
#[test]
fn check_version_output() {
use std::string::String;
use assert_cmd::Command;
use regex::Regex;
let mut cmd = Command::cargo_bin("fif").unwrap();
let output = cmd.arg("-V").ok().unwrap().stdout;
let output = String::from_utf8(output).unwrap();
assert!(
Regex::new(r"fif v([0-9]\.){2}[0-9]").unwrap().is_match(output.trim()),
"\"{output}\" does not match the expected `-v` format!"
);
let mut cmd = Command::cargo_bin("fif").unwrap();
let output = cmd.arg("--version").ok().unwrap().stdout;
let output = String::from_utf8(output).unwrap();
assert!(
Regex::new(r"fif v([0-9]\.){2}[0-9] \(.+, .+ backend, (unknown commit|commit #[[:xdigit:]]{7})\)")
.unwrap()
.is_match(output.trim()),
"\"{}\" does not match the expected `--version` format!",
output.trim()
);
}