mirror of
https://github.com/clap-rs/clap
synced 2024-12-13 22:32:33 +00:00
add validation tests
This commit is contained in:
parent
5fccd1fef8
commit
1401faa486
1 changed files with 77 additions and 0 deletions
77
tests/env.rs
77
tests/env.rs
|
@ -184,3 +184,80 @@ fn multiple_no_delimiter() {
|
||||||
vec!["env1 env2 env3"]
|
vec!["env1 env2 env3"]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn possible_value() {
|
||||||
|
env::set_var("CLP_TEST_ENV", "env");
|
||||||
|
|
||||||
|
let r = App::new("df")
|
||||||
|
.arg(
|
||||||
|
Arg::from_usage("[arg] 'some opt'")
|
||||||
|
.env("CLP_TEST_ENV")
|
||||||
|
.possible_value("env"),
|
||||||
|
)
|
||||||
|
.get_matches_from_safe(vec![""]);
|
||||||
|
|
||||||
|
assert!(r.is_ok());
|
||||||
|
let m = r.unwrap();
|
||||||
|
assert!(m.is_present("arg"));
|
||||||
|
assert_eq!(m.occurrences_of("arg"), 0);
|
||||||
|
assert_eq!(m.value_of("arg").unwrap(), "env");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn not_possible_value() {
|
||||||
|
env::set_var("CLP_TEST_ENV", "env");
|
||||||
|
|
||||||
|
let r = App::new("df")
|
||||||
|
.arg(
|
||||||
|
Arg::from_usage("[arg] 'some opt'")
|
||||||
|
.env("CLP_TEST_ENV")
|
||||||
|
.possible_value("never"),
|
||||||
|
)
|
||||||
|
.get_matches_from_safe(vec![""]);
|
||||||
|
|
||||||
|
assert!(r.is_err());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn validator() {
|
||||||
|
env::set_var("CLP_TEST_ENV", "env");
|
||||||
|
|
||||||
|
let r = App::new("df")
|
||||||
|
.arg(
|
||||||
|
Arg::from_usage("[arg] 'some opt'")
|
||||||
|
.env("CLP_TEST_ENV")
|
||||||
|
.validator(|s| if s == "env" {
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
Err("not equal".to_string())
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.get_matches_from_safe(vec![""]);
|
||||||
|
|
||||||
|
assert!(r.is_ok());
|
||||||
|
let m = r.unwrap();
|
||||||
|
assert!(m.is_present("arg"));
|
||||||
|
assert_eq!(m.occurrences_of("arg"), 0);
|
||||||
|
assert_eq!(m.value_of("arg").unwrap(), "env");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn validator_invalid() {
|
||||||
|
env::set_var("CLP_TEST_ENV", "env");
|
||||||
|
|
||||||
|
let r = App::new("df")
|
||||||
|
.arg(
|
||||||
|
Arg::from_usage("[arg] 'some opt'")
|
||||||
|
.env("CLP_TEST_ENV")
|
||||||
|
.validator(|s| if s != "env" {
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
Err("is equal".to_string())
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.get_matches_from_safe(vec![""]);
|
||||||
|
|
||||||
|
assert!(r.is_err());
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue