Fixes group conflicting if two args with default values

This commit is contained in:
Pavan Kumar Sunkara 2021-10-25 19:47:36 +01:00
parent 64a2866b09
commit 01869744c2
No known key found for this signature in database
GPG key ID: 7149B807A81DE336
2 changed files with 21 additions and 1 deletions

View file

@ -277,7 +277,7 @@ impl<'help, 'app, 'parser> Validator<'help, 'app, 'parser> {
.app
.unroll_args_in_group(&g.id)
.iter()
.filter(|&a| matcher.contains(a))
.filter(|&a| matcher.contains(a) && !matcher.is_default_value(a))
.count()
> 1
};

View file

@ -285,6 +285,26 @@ fn group_in_conflicts_with() {
assert_eq!(m.value_of("opt"), Some("default"));
assert!(m.is_present("flag"));
}
#[test]
fn group_conflicts_with_default_value() {
let result = App::new("conflict")
.arg(
Arg::new("opt")
.long("opt")
.default_value("default")
.group("one"),
)
.arg(Arg::new("flag").long("flag").group("one"))
.try_get_matches_from(vec!["myprog", "--flag"]);
assert!(result.is_ok(), "{:?}", result.unwrap());
let m = result.unwrap();
assert_eq!(m.value_of("opt"), Some("default"));
assert!(m.is_present("flag"));
}
#[test]
fn group_conflicts_with_default_arg() {
let result = App::new("conflict")