mod common;
use common::{grex, required_args_for, run_with_flags, STUB_VERBS as VERBS};
use predicates::prelude::*;
#[test]
fn json_flag_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--json"]);
}
}
#[test]
fn plain_flag_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--plain"]);
}
}
#[test]
fn dry_run_flag_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--dry-run"]);
}
}
#[test]
fn filter_flag_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--filter", "kind=git"]);
}
}
#[test]
fn filter_edge_cases_accepted() {
for expr in ["", " ", "kind=*&name=?"] {
run_with_flags("init", &["--filter", expr]);
}
}
#[test]
fn combined_flags_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--json", "--dry-run"]);
}
}
#[test]
fn all_json_flags_together_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--json", "--dry-run", "--filter", "name=foo"]);
}
}
#[test]
fn all_plain_flags_together_accepted_on_every_verb() {
for verb in VERBS {
run_with_flags(verb, &["--plain", "--dry-run", "--filter", "name=foo"]);
}
}
#[test]
fn json_and_plain_conflict() {
grex().args(["init", "--json", "--plain"]).assert().failure().stderr(
predicate::str::contains("cannot be used").or(predicate::str::contains("conflict")),
);
}
#[test]
fn flag_ordering_before_and_after_verb_accepted() {
for verb in VERBS {
let mut cmd = grex();
cmd.arg(verb);
cmd.args(required_args_for(verb));
cmd.arg("--json");
cmd.assert().success();
}
for verb in VERBS {
let mut cmd = grex();
cmd.arg("--json");
cmd.arg(verb);
cmd.args(required_args_for(verb));
cmd.assert().success();
}
}