Merge pull request #4988 from sebastiantoh/ignore-errors

fix(parser): Allow help and version command
This commit is contained in:
Ed Page 2023-06-28 08:38:35 -05:00 committed by GitHub
commit d83cc6d3e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View file

@ -3810,7 +3810,7 @@ impl Command {
// do the real parsing
let mut parser = Parser::new(self);
if let Err(error) = parser.get_matches_with(&mut matcher, raw_args, args_cursor) {
if self.is_set(AppSettings::IgnoreErrors) {
if self.is_set(AppSettings::IgnoreErrors) && error.use_stderr() {
debug!("Command::_do_parse: ignoring error: {error}");
} else {
return Err(error);

View file

@ -1,5 +1,7 @@
use clap::{arg, Arg, ArgAction, Command};
use super::utils;
#[test]
fn single_short_arg_without_value() {
let cmd = Command::new("cmd").ignore_errors(true).arg(arg!(
@ -124,3 +126,24 @@ fn subcommand() {
Some("some other val")
);
}
#[test]
fn help_command() {
static HELP: &str = "\
Usage: test
Options:
-h, --help Print help
";
let cmd = Command::new("test").ignore_errors(true);
utils::assert_output(cmd, "test --help", HELP, false);
}
#[test]
fn version_command() {
let cmd = Command::new("test").ignore_errors(true).version("0.1");
utils::assert_output(cmd, "test --version", "test 0.1\n", false);
}