From 5b68b6ee81430b5eedbf07a95e33c20fbfca3903 Mon Sep 17 00:00:00 2001 From: Clement Tsang <34804052+ClementTsang@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:45:24 +0000 Subject: [PATCH] other: add test to catch issues with incorrect long arg names (#1528) --- src/options/args.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/options/args.rs b/src/options/args.rs index 8bbabb5e..a68c32db 100644 --- a/src/options/args.rs +++ b/src/options/args.rs @@ -586,6 +586,8 @@ pub(crate) fn build_cmd() -> Command { #[cfg(test)] mod test { + use std::collections::HashSet; + use super::*; #[test] @@ -596,12 +598,37 @@ mod test { #[test] fn no_default_help_heading() { let mut cmd = build_cmd(); - let help_str = cmd.render_help(); + let help_str = cmd.render_help(); assert!( !help_str.to_string().contains("\nOptions:\n"), "the default 'Options' heading should not exist; if it does then an argument is \ missing a help heading." ); + + let long_help_str = cmd.render_long_help(); + assert!( + !long_help_str.to_string().contains("\nOptions:\n"), + "the default 'Options' heading should not exist; if it does then an argument is \ + missing a help heading." + ); + } + + #[test] + fn catch_incorrect_long_args() { + // Set this to allow certain ones through if needed. + let allow_list: HashSet<&str> = vec![].into_iter().collect(); + let cmd = build_cmd(); + + for opts in cmd.get_opts() { + let long_flag = opts.get_long().unwrap(); + + if !allow_list.contains(long_flag) { + assert!( + long_flag.len() < 30, + "the long help arg '{long_flag}' might be set wrong, please take a look!" + ); + } + } } }