Skip to content

Commit

Permalink
tests: Improve generate help test
Browse files Browse the repository at this point in the history
Make the `test_generate_help_usage()` test more rigorous.

Signed-off-by: James O. D. Hunt <jamesodhunt@gmail.com>
  • Loading branch information
jamesodhunt committed May 27, 2021
1 parent 6fca802 commit 8e762bf
Showing 1 changed file with 22 additions and 19 deletions.
41 changes: 22 additions & 19 deletions src/args.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2376,8 +2376,6 @@ mod tests {
assert!(re.is_match(&value));
}

// FIXME: Test could be improved by checking to also ensure that the other
// forms of usage are not displayed!
#[test]
fn test_generate_help_usage() {
#[derive(Debug)]
Expand All @@ -2389,85 +2387,85 @@ mod tests {
let tests = &[
TestData {
args: vec![Arg::new(POSITIONAL_HANDLER_OPT)],
usage: "[ARGUMENT]...",
usage: r#"\[ARGUMENT\]..."#,
},
//--------------------
TestData {
args: vec![Arg::new('d')],
usage: "[FLAG]...",
usage: r#"\[FLAG\]..."#,
},
TestData {
args: vec![Arg::new('d'), Arg::new('e')],
usage: "[FLAG]...",
usage: r#"\[FLAG\]..."#,
},
TestData {
args: vec![Arg::new('d').required()],
usage: "[FLAG]...",
usage: r#"\[FLAG\]..."#,
},
TestData {
args: vec![Arg::new('d').required().needs(Need::Nothing)],
usage: "[FLAG]...",
usage: r#"\[FLAG\]..."#,
},
TestData {
args: vec![Arg::new('d').required().needs(Need::Nothing), Arg::new('e')],
usage: "[FLAG]...",
usage: r#"\[FLAG\]..."#,
},
TestData {
args: vec![Arg::new('d').needs(Need::Nothing), Arg::new('e')],
usage: "[FLAG]...",
usage: r#"\[FLAG\]..."#,
},
//--------------------
TestData {
args: vec![Arg::new('a').needs(Need::Argument)],
usage: "[OPTION]...",
usage: r#"\[OPTION\]..."#,
},
TestData {
args: vec![
Arg::new('d').needs(Need::Argument),
Arg::new('e').needs(Need::Argument),
],
usage: "[OPTION]...",
usage: r#"\[OPTION\]..."#,
},
TestData {
args: vec![Arg::new('d').needs(Need::Argument).required()],
usage: "[OPTION]...",
usage: r#"\[OPTION\]..."#,
},
TestData {
args: vec![
Arg::new('d').needs(Need::Argument).required(),
Arg::new('e').needs(Need::Argument),
],
usage: "[OPTION]...",
usage: r#"\[OPTION\]..."#,
},
//--------------------
TestData {
args: vec![
Arg::new('d').needs(Need::Nothing),
Arg::new('e').needs(Need::Argument),
],
usage: "[FLAG/OPTION]...",
usage: r#"\[FLAG/OPTION\]..."#,
},
TestData {
args: vec![
Arg::new('d').needs(Need::Nothing),
Arg::new(POSITIONAL_HANDLER_OPT),
],
usage: "[FLAG]... [ARGUMENT]...",
usage: r#"\[FLAG\]... \[ARGUMENT\]..."#,
},
TestData {
args: vec![
Arg::new(POSITIONAL_HANDLER_OPT),
Arg::new('e').needs(Need::Argument),
],
usage: "[OPTION]... [ARGUMENT]...",
usage: r#"\[OPTION\]... \[ARGUMENT\]..."#,
},
TestData {
args: vec![
Arg::new(POSITIONAL_HANDLER_OPT),
Arg::new('d').needs(Need::Nothing),
Arg::new('e').needs(Need::Argument),
],
usage: "[FLAG/OPTION]... [ARGUMENT]...",
usage: r#"\[FLAG/OPTION\]... \[ARGUMENT\]..."#,
},
//--------------------
];
Expand All @@ -2484,15 +2482,20 @@ mod tests {
args.add(arg);
}

let app = App::new("test").args(args).handler(Box::new(&mut handler));
let name = "test";
let app = App::new(name).args(args).handler(Box::new(&mut handler));
let result = app.generate_help(&mut writer);
assert!(result.is_ok(), "{}", msg);

drop(app);

let value = writer.to_string();

assert!(value.contains(d.usage), "{}", msg);
let usage_re = format!(r"USAGE:\n\s+{}\s+{}\n", name, d.usage);

let re = Regex::new(&usage_re).unwrap();

assert!(re.is_match(&value), "{}", msg);
}
}

Expand Down

0 comments on commit 8e762bf

Please sign in to comment.