mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 14:52:33 +00:00
8988853fb8
Tons of code has been moved into functions, deduplicated, made much easier to read, maintain, and understand. Comments still need to be added, but that will happen shortly. Modules have also been moved around to follow Rust conventions and best practices. All functionality remains exactly the same
79 lines
2.6 KiB
Rust
79 lines
2.6 KiB
Rust
extern crate clap;
|
|
|
|
use clap::{App, ArgGroup, ClapErrorType};
|
|
|
|
#[test]
|
|
fn required_group_missing_arg() {
|
|
let result = App::new("group")
|
|
.args_from_usage("-f, --flag 'some flag'
|
|
-c, --color 'some other flag'")
|
|
.arg_group(ArgGroup::with_name("req")
|
|
.add_all(&["flag", "color"])
|
|
.required(true))
|
|
.get_matches_from_safe(vec![""]);
|
|
assert!(result.is_err());
|
|
let err = result.err().unwrap();
|
|
assert_eq!(err.error_type, ClapErrorType::MissingRequiredArgument);
|
|
}
|
|
|
|
#[test]
|
|
fn group_single_value() {
|
|
let m = App::new("group")
|
|
.args_from_usage("-f, --flag 'some flag'
|
|
-c, --color [color] 'some option'")
|
|
.arg_group(ArgGroup::with_name("grp")
|
|
.add_all(&["flag", "color"]))
|
|
.get_matches_from(vec!["", "-c", "blue"]);
|
|
assert!(m.is_present("grp"));
|
|
assert_eq!(m.value_of("grp").unwrap(), "blue");
|
|
}
|
|
|
|
#[test]
|
|
fn group_single_flag() {
|
|
let m = App::new("group")
|
|
.args_from_usage("-f, --flag 'some flag'
|
|
-c, --color [color] 'some option'")
|
|
.arg_group(ArgGroup::with_name("grp")
|
|
.add_all(&["flag", "color"]))
|
|
.get_matches_from(vec!["", "-f"]);
|
|
assert!(m.is_present("grp"));
|
|
assert!(m.value_of("grp").is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn group_empty() {
|
|
let m = App::new("group")
|
|
.args_from_usage("-f, --flag 'some flag'
|
|
-c, --color [color] 'some option'")
|
|
.arg_group(ArgGroup::with_name("grp")
|
|
.add_all(&["flag", "color"]))
|
|
.get_matches_from(vec![""]);
|
|
assert!(!m.is_present("grp"));
|
|
assert!(m.value_of("grp").is_none());
|
|
}
|
|
|
|
#[test]
|
|
fn group_reqired_flags_empty() {
|
|
let result = App::new("group")
|
|
.args_from_usage("-f, --flag 'some flag'
|
|
-c, --color 'some option'")
|
|
.arg_group(ArgGroup::with_name("grp")
|
|
.required(true)
|
|
.add_all(&["flag", "color"]))
|
|
.get_matches_from_safe(vec![""]);
|
|
assert!(result.is_err());
|
|
let err = result.err().unwrap();
|
|
assert_eq!(err.error_type, ClapErrorType::MissingRequiredArgument);
|
|
}
|
|
|
|
#[test]
|
|
fn group_multi_value_single_arg() {
|
|
let m = App::new("group")
|
|
.args_from_usage("-f, --flag 'some flag'
|
|
-c, --color [color]... 'some option'")
|
|
.arg_group(ArgGroup::with_name("grp")
|
|
.add_all(&["flag", "color"]))
|
|
.get_matches_from(vec!["", "-c", "blue", "red", "green"]);
|
|
assert!(m.is_present("grp"));
|
|
assert_eq!(m.values_of("grp").unwrap(), &["blue", "red", "green"]);
|
|
}
|