119625d8cSopenharmony_ciuse super::utils; 219625d8cSopenharmony_ci 319625d8cSopenharmony_ciuse clap::{arg, builder::PossibleValue, Arg, ArgAction, Command}; 419625d8cSopenharmony_ci 519625d8cSopenharmony_cistatic HIDDEN_ARGS: &str = "\ 619625d8cSopenharmony_citests stuff 719625d8cSopenharmony_ci 819625d8cSopenharmony_ciUsage: test [OPTIONS] 919625d8cSopenharmony_ci 1019625d8cSopenharmony_ciOptions: 1119625d8cSopenharmony_ci -F, --flag2 some other flag 1219625d8cSopenharmony_ci --option <opt> some option 1319625d8cSopenharmony_ci -h, --help Print help 1419625d8cSopenharmony_ci -V, --version Print version 1519625d8cSopenharmony_ci"; 1619625d8cSopenharmony_ci 1719625d8cSopenharmony_ci#[test] 1819625d8cSopenharmony_cifn hide_args() { 1919625d8cSopenharmony_ci let cmd = Command::new("test") 2019625d8cSopenharmony_ci .author("Kevin K.") 2119625d8cSopenharmony_ci .about("tests stuff") 2219625d8cSopenharmony_ci .version("1.4") 2319625d8cSopenharmony_ci .args([ 2419625d8cSopenharmony_ci arg!(-f --flag "some flag").hide(true), 2519625d8cSopenharmony_ci arg!(-F --flag2 "some other flag"), 2619625d8cSopenharmony_ci arg!(--option <opt> "some option"), 2719625d8cSopenharmony_ci Arg::new("DUMMY").hide(true), 2819625d8cSopenharmony_ci ]); 2919625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_ARGS, false); 3019625d8cSopenharmony_ci} 3119625d8cSopenharmony_ci 3219625d8cSopenharmony_cistatic HIDDEN_SHORT_ARGS: &str = "\ 3319625d8cSopenharmony_cihides short args 3419625d8cSopenharmony_ci 3519625d8cSopenharmony_ciUsage: test [OPTIONS] 3619625d8cSopenharmony_ci 3719625d8cSopenharmony_ciOptions: 3819625d8cSopenharmony_ci -v, --visible This text should be visible 3919625d8cSopenharmony_ci -h, --help Print help (see more with '--help') 4019625d8cSopenharmony_ci -V, --version Print version 4119625d8cSopenharmony_ci"; 4219625d8cSopenharmony_ci 4319625d8cSopenharmony_ci/// Ensure hide with short option 4419625d8cSopenharmony_ci#[test] 4519625d8cSopenharmony_cifn hide_short_args() { 4619625d8cSopenharmony_ci let cmd = Command::new("test") 4719625d8cSopenharmony_ci .about("hides short args") 4819625d8cSopenharmony_ci .author("Steve P.") 4919625d8cSopenharmony_ci .version("2.31.2") 5019625d8cSopenharmony_ci .args([ 5119625d8cSopenharmony_ci Arg::new("cfg") 5219625d8cSopenharmony_ci .short('c') 5319625d8cSopenharmony_ci .long("config") 5419625d8cSopenharmony_ci .hide_short_help(true) 5519625d8cSopenharmony_ci .action(ArgAction::SetTrue) 5619625d8cSopenharmony_ci .help("Some help text describing the --config arg"), 5719625d8cSopenharmony_ci Arg::new("visible") 5819625d8cSopenharmony_ci .short('v') 5919625d8cSopenharmony_ci .long("visible") 6019625d8cSopenharmony_ci .action(ArgAction::SetTrue) 6119625d8cSopenharmony_ci .help("This text should be visible"), 6219625d8cSopenharmony_ci ]); 6319625d8cSopenharmony_ci 6419625d8cSopenharmony_ci utils::assert_output(cmd, "test -h", HIDDEN_SHORT_ARGS, false); 6519625d8cSopenharmony_ci} 6619625d8cSopenharmony_ci 6719625d8cSopenharmony_ci/// Ensure visible with opposite option 6819625d8cSopenharmony_ci#[test] 6919625d8cSopenharmony_cifn hide_short_args_long_help() { 7019625d8cSopenharmony_ci static HIDDEN_SHORT_ARGS_LONG_HELP: &str = "\ 7119625d8cSopenharmony_cihides short args 7219625d8cSopenharmony_ci 7319625d8cSopenharmony_ciUsage: test [OPTIONS] 7419625d8cSopenharmony_ci 7519625d8cSopenharmony_ciOptions: 7619625d8cSopenharmony_ci -c, --config 7719625d8cSopenharmony_ci Some help text describing the --config arg 7819625d8cSopenharmony_ci 7919625d8cSopenharmony_ci -v, --visible 8019625d8cSopenharmony_ci This text should be visible 8119625d8cSopenharmony_ci 8219625d8cSopenharmony_ci -h, --help 8319625d8cSopenharmony_ci Print help (see a summary with '-h') 8419625d8cSopenharmony_ci 8519625d8cSopenharmony_ci -V, --version 8619625d8cSopenharmony_ci Print version 8719625d8cSopenharmony_ci"; 8819625d8cSopenharmony_ci 8919625d8cSopenharmony_ci let cmd = Command::new("test") 9019625d8cSopenharmony_ci .about("hides short args") 9119625d8cSopenharmony_ci .author("Steve P.") 9219625d8cSopenharmony_ci .version("2.31.2") 9319625d8cSopenharmony_ci .args([ 9419625d8cSopenharmony_ci Arg::new("cfg") 9519625d8cSopenharmony_ci .short('c') 9619625d8cSopenharmony_ci .long("config") 9719625d8cSopenharmony_ci .hide_short_help(true) 9819625d8cSopenharmony_ci .action(ArgAction::SetTrue) 9919625d8cSopenharmony_ci .help("Some help text describing the --config arg"), 10019625d8cSopenharmony_ci Arg::new("visible") 10119625d8cSopenharmony_ci .short('v') 10219625d8cSopenharmony_ci .long("visible") 10319625d8cSopenharmony_ci .action(ArgAction::SetTrue) 10419625d8cSopenharmony_ci .help("This text should be visible"), 10519625d8cSopenharmony_ci ]); 10619625d8cSopenharmony_ci 10719625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_SHORT_ARGS_LONG_HELP, false); 10819625d8cSopenharmony_ci} 10919625d8cSopenharmony_ci 11019625d8cSopenharmony_cistatic HIDDEN_LONG_ARGS: &str = "\ 11119625d8cSopenharmony_cihides long args 11219625d8cSopenharmony_ci 11319625d8cSopenharmony_ciUsage: test [OPTIONS] 11419625d8cSopenharmony_ci 11519625d8cSopenharmony_ciOptions: 11619625d8cSopenharmony_ci -v, --visible 11719625d8cSopenharmony_ci This text should be visible 11819625d8cSopenharmony_ci 11919625d8cSopenharmony_ci -h, --help 12019625d8cSopenharmony_ci Print help (see a summary with '-h') 12119625d8cSopenharmony_ci 12219625d8cSopenharmony_ci -V, --version 12319625d8cSopenharmony_ci Print version 12419625d8cSopenharmony_ci"; 12519625d8cSopenharmony_ci 12619625d8cSopenharmony_ci#[test] 12719625d8cSopenharmony_cifn hide_long_args() { 12819625d8cSopenharmony_ci let cmd = Command::new("test") 12919625d8cSopenharmony_ci .about("hides long args") 13019625d8cSopenharmony_ci .author("Steve P.") 13119625d8cSopenharmony_ci .version("2.31.2") 13219625d8cSopenharmony_ci .args([ 13319625d8cSopenharmony_ci Arg::new("cfg") 13419625d8cSopenharmony_ci .short('c') 13519625d8cSopenharmony_ci .long("config") 13619625d8cSopenharmony_ci .hide_long_help(true) 13719625d8cSopenharmony_ci .action(ArgAction::SetTrue) 13819625d8cSopenharmony_ci .help("Some help text describing the --config arg"), 13919625d8cSopenharmony_ci Arg::new("visible") 14019625d8cSopenharmony_ci .short('v') 14119625d8cSopenharmony_ci .long("visible") 14219625d8cSopenharmony_ci .action(ArgAction::SetTrue) 14319625d8cSopenharmony_ci .help("This text should be visible"), 14419625d8cSopenharmony_ci ]); 14519625d8cSopenharmony_ci 14619625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_LONG_ARGS, false); 14719625d8cSopenharmony_ci} 14819625d8cSopenharmony_ci 14919625d8cSopenharmony_cistatic HIDDEN_LONG_ARGS_SHORT_HELP: &str = "\ 15019625d8cSopenharmony_cihides long args 15119625d8cSopenharmony_ci 15219625d8cSopenharmony_ciUsage: test [OPTIONS] 15319625d8cSopenharmony_ci 15419625d8cSopenharmony_ciOptions: 15519625d8cSopenharmony_ci -c, --config Some help text describing the --config arg 15619625d8cSopenharmony_ci -v, --visible This text should be visible 15719625d8cSopenharmony_ci -h, --help Print help (see more with '--help') 15819625d8cSopenharmony_ci -V, --version Print version 15919625d8cSopenharmony_ci"; 16019625d8cSopenharmony_ci 16119625d8cSopenharmony_ci#[test] 16219625d8cSopenharmony_cifn hide_long_args_short_help() { 16319625d8cSopenharmony_ci let cmd = Command::new("test") 16419625d8cSopenharmony_ci .about("hides long args") 16519625d8cSopenharmony_ci .author("Steve P.") 16619625d8cSopenharmony_ci .version("2.31.2") 16719625d8cSopenharmony_ci .args([ 16819625d8cSopenharmony_ci Arg::new("cfg") 16919625d8cSopenharmony_ci .short('c') 17019625d8cSopenharmony_ci .long("config") 17119625d8cSopenharmony_ci .hide_long_help(true) 17219625d8cSopenharmony_ci .action(ArgAction::SetTrue) 17319625d8cSopenharmony_ci .help("Some help text describing the --config arg"), 17419625d8cSopenharmony_ci Arg::new("visible") 17519625d8cSopenharmony_ci .short('v') 17619625d8cSopenharmony_ci .long("visible") 17719625d8cSopenharmony_ci .action(ArgAction::SetTrue) 17819625d8cSopenharmony_ci .help("This text should be visible"), 17919625d8cSopenharmony_ci ]); 18019625d8cSopenharmony_ci 18119625d8cSopenharmony_ci utils::assert_output(cmd, "test -h", HIDDEN_LONG_ARGS_SHORT_HELP, false); 18219625d8cSopenharmony_ci} 18319625d8cSopenharmony_ci 18419625d8cSopenharmony_cistatic HIDDEN_POS_ARGS: &str = "\ 18519625d8cSopenharmony_ciUsage: test [another] 18619625d8cSopenharmony_ci 18719625d8cSopenharmony_ciArguments: 18819625d8cSopenharmony_ci [another] another pos 18919625d8cSopenharmony_ci 19019625d8cSopenharmony_ciOptions: 19119625d8cSopenharmony_ci -h, --help Print help 19219625d8cSopenharmony_ci -V, --version Print version 19319625d8cSopenharmony_ci"; 19419625d8cSopenharmony_ci 19519625d8cSopenharmony_ci#[test] 19619625d8cSopenharmony_cifn hide_pos_args() { 19719625d8cSopenharmony_ci let cmd = Command::new("test").version("1.4").args([ 19819625d8cSopenharmony_ci Arg::new("pos").help("some pos").hide(true), 19919625d8cSopenharmony_ci Arg::new("another").help("another pos"), 20019625d8cSopenharmony_ci ]); 20119625d8cSopenharmony_ci 20219625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_POS_ARGS, false); 20319625d8cSopenharmony_ci} 20419625d8cSopenharmony_ci 20519625d8cSopenharmony_cistatic HIDDEN_SUBCMDS: &str = "\ 20619625d8cSopenharmony_ciUsage: test 20719625d8cSopenharmony_ci 20819625d8cSopenharmony_ciOptions: 20919625d8cSopenharmony_ci -h, --help Print help 21019625d8cSopenharmony_ci -V, --version Print version 21119625d8cSopenharmony_ci"; 21219625d8cSopenharmony_ci 21319625d8cSopenharmony_ci#[test] 21419625d8cSopenharmony_cifn hide_subcmds() { 21519625d8cSopenharmony_ci let cmd = Command::new("test") 21619625d8cSopenharmony_ci .version("1.4") 21719625d8cSopenharmony_ci .subcommand(Command::new("sub").hide(true)); 21819625d8cSopenharmony_ci 21919625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_SUBCMDS, false); 22019625d8cSopenharmony_ci} 22119625d8cSopenharmony_ci 22219625d8cSopenharmony_cistatic HIDDEN_OPT_ARGS_ONLY: &str = "\ 22319625d8cSopenharmony_ciUsage: test 22419625d8cSopenharmony_ci 22519625d8cSopenharmony_ciAfter help 22619625d8cSopenharmony_ci"; 22719625d8cSopenharmony_ci 22819625d8cSopenharmony_ci#[test] 22919625d8cSopenharmony_cifn hide_opt_args_only() { 23019625d8cSopenharmony_ci let cmd = Command::new("test") 23119625d8cSopenharmony_ci .version("1.4") 23219625d8cSopenharmony_ci .after_help("After help") 23319625d8cSopenharmony_ci .disable_help_flag(true) 23419625d8cSopenharmony_ci .disable_version_flag(true) 23519625d8cSopenharmony_ci .arg(arg!(-h - -help).action(ArgAction::Help).hide(true)) 23619625d8cSopenharmony_ci .arg(arg!(-v - -version).hide(true)) 23719625d8cSopenharmony_ci .arg(arg!(--option <opt> "some option").hide(true)); 23819625d8cSopenharmony_ci 23919625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_OPT_ARGS_ONLY, false); 24019625d8cSopenharmony_ci} 24119625d8cSopenharmony_ci 24219625d8cSopenharmony_cistatic HIDDEN_POS_ARGS_ONLY: &str = "\ 24319625d8cSopenharmony_ciUsage: test 24419625d8cSopenharmony_ci 24519625d8cSopenharmony_ciAfter help 24619625d8cSopenharmony_ci"; 24719625d8cSopenharmony_ci 24819625d8cSopenharmony_ci#[test] 24919625d8cSopenharmony_cifn hide_pos_args_only() { 25019625d8cSopenharmony_ci let cmd = Command::new("test") 25119625d8cSopenharmony_ci .version("1.4") 25219625d8cSopenharmony_ci .after_help("After help") 25319625d8cSopenharmony_ci .disable_help_flag(true) 25419625d8cSopenharmony_ci .disable_version_flag(true) 25519625d8cSopenharmony_ci .arg(arg!(-h - -help).action(ArgAction::Help).hide(true)) 25619625d8cSopenharmony_ci .arg(arg!(-v - -version).hide(true)) 25719625d8cSopenharmony_ci .args([Arg::new("pos").help("some pos").hide(true)]); 25819625d8cSopenharmony_ci 25919625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_POS_ARGS_ONLY, false); 26019625d8cSopenharmony_ci} 26119625d8cSopenharmony_ci 26219625d8cSopenharmony_cistatic HIDDEN_SUBCMDS_ONLY: &str = "\ 26319625d8cSopenharmony_ciUsage: test 26419625d8cSopenharmony_ci 26519625d8cSopenharmony_ciAfter help 26619625d8cSopenharmony_ci"; 26719625d8cSopenharmony_ci 26819625d8cSopenharmony_ci#[test] 26919625d8cSopenharmony_cifn hide_subcmds_only() { 27019625d8cSopenharmony_ci let cmd = Command::new("test") 27119625d8cSopenharmony_ci .version("1.4") 27219625d8cSopenharmony_ci .after_help("After help") 27319625d8cSopenharmony_ci .disable_help_flag(true) 27419625d8cSopenharmony_ci .disable_version_flag(true) 27519625d8cSopenharmony_ci .arg(arg!(-h - -help).action(ArgAction::Help).hide(true)) 27619625d8cSopenharmony_ci .arg(arg!(-v - -version).hide(true)) 27719625d8cSopenharmony_ci .subcommand(Command::new("sub").hide(true)); 27819625d8cSopenharmony_ci 27919625d8cSopenharmony_ci utils::assert_output(cmd, "test --help", HIDDEN_SUBCMDS_ONLY, false); 28019625d8cSopenharmony_ci} 28119625d8cSopenharmony_ci 28219625d8cSopenharmony_ci#[test] 28319625d8cSopenharmony_cifn hidden_arg_with_possible_value_with_help() { 28419625d8cSopenharmony_ci // Normally the presence of a possible value with a help text triggers a 28519625d8cSopenharmony_ci // change of the --help help text by appending `(see more with '--help')` 28619625d8cSopenharmony_ci // or `(see a summary with '-h')`. When the argument is completely hidden 28719625d8cSopenharmony_ci // we however do not want it to trigger that change. 28819625d8cSopenharmony_ci static POS_VALS_HELP: &str = "\ 28919625d8cSopenharmony_ciUsage: ctest 29019625d8cSopenharmony_ci 29119625d8cSopenharmony_ciOptions: 29219625d8cSopenharmony_ci -h, --help Print help 29319625d8cSopenharmony_ci"; 29419625d8cSopenharmony_ci let app = Command::new("ctest").arg( 29519625d8cSopenharmony_ci Arg::new("pos") 29619625d8cSopenharmony_ci .hide(true) 29719625d8cSopenharmony_ci .value_parser([ 29819625d8cSopenharmony_ci PossibleValue::new("fast"), 29919625d8cSopenharmony_ci PossibleValue::new("slow").help("not as fast"), 30019625d8cSopenharmony_ci ]) 30119625d8cSopenharmony_ci .action(ArgAction::Set), 30219625d8cSopenharmony_ci ); 30319625d8cSopenharmony_ci utils::assert_output(app, "ctest --help", POS_VALS_HELP, false); 30419625d8cSopenharmony_ci} 305