mod common;
use common::{drive, drive_result};
mod conflicting_flags {
use super::drive_result;
use clap::Parser;
use face_cli::cli::Cli;
#[test]
fn explain_and_schema_conflicts() {
let stdin = "{\"kind\":\"bug\"}\n";
let outcome = drive_result(&["face", "--explain", "--schema"], stdin);
assert!(
outcome.is_err(),
"expected error on `--explain --schema`: outcome={outcome:?}",
);
}
#[test]
fn unknown_color_value_errors() {
let outcome = Cli::try_parse_from(["face", "--color=banana"]);
assert!(
outcome.is_err(),
"unknown --color value should fail clap parse, got Ok({:?})",
outcome.ok(),
);
}
#[test]
fn interactive_and_format_conflict() {
let stdin = "{\"kind\":\"bug\"}\n{\"kind\":\"feat\"}\n";
let outcome = super::drive_result(&["face", "--interactive", "--format=json"], stdin);
assert!(
outcome.is_err(),
"`--interactive --format=json` should conflict: {outcome:?}",
);
}
}
mod malformed_input {
use super::drive;
#[test]
fn unknown_items_path() {
let stdin = "{\"weird\":[1,2,3]}";
let (code, _stdout, stderr) = drive(&["face", "--items=.nope"], stdin);
assert_ne!(code, 0, "unknown items path is fatal: stderr={stderr:?}");
}
#[test]
fn unknown_score_path() {
let stdin = "{\"kind\":\"bug\"}\n{\"kind\":\"feat\"}\n";
let (code, _stdout, stderr) = drive(&["face", "--score=.nope"], stdin);
assert_ne!(code, 0, "unknown score path is fatal: stderr={stderr:?}");
}
}