From 5f08afafef3bf919742ac32a9665935822409da5 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Wed, 15 Feb 2023 17:52:11 +0100 Subject: [PATCH] fix(help): Fix yet another --help long help edge case --- src/builder/command.rs | 7 ++++--- tests/builder/help.rs | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/builder/command.rs b/src/builder/command.rs index b587fb01b04..538c879112e 100644 --- a/src/builder/command.rs +++ b/src/builder/command.rs @@ -4597,9 +4597,10 @@ impl Command { && (v.get_long_help().is_some() || v.is_hide_long_help_set() || v.is_hide_short_help_set() - || v.get_possible_values() - .iter() - .any(PossibleValue::should_show_help)) + || (!v.is_hide_possible_values_set() + && v.get_possible_values() + .iter() + .any(PossibleValue::should_show_help))) }; // Subcommands aren't checked because we prefer short help for them, deferring to diff --git a/tests/builder/help.rs b/tests/builder/help.rs index 984a86c245f..28aed85556f 100644 --- a/tests/builder/help.rs +++ b/tests/builder/help.rs @@ -676,6 +676,29 @@ Options: utils::assert_output(app, "ctest --help", POS_VALS_HELP, false); } +#[test] +fn hidden_possible_vals() { + static POS_VALS_HELP: &str = "\ +Usage: ctest [pos] + +Arguments: + [pos] + +Options: + -h, --help Print help +"; + let app = Command::new("ctest").arg( + Arg::new("pos") + .hide_possible_values(true) + .value_parser([ + PossibleValue::new("fast"), + PossibleValue::new("slow").help("not as fast"), + ]) + .action(ArgAction::Set), + ); + utils::assert_output(app, "ctest --help", POS_VALS_HELP, false); +} + #[test] #[cfg(feature = "wrap_help")] fn issue_626_panic() {