mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 06:42:33 +00:00
07b6e66eb7
Documenting the existing behavior is challenging which suggests it can cause user confusion. So long as its not too hard to explicitly specify actions, we should just do it. Fixes #4057
304 lines
7.2 KiB
Rust
304 lines
7.2 KiB
Rust
use super::utils;
|
|
|
|
use clap::{arg, Arg, ArgAction, Command};
|
|
|
|
static HIDDEN_ARGS: &str = "test 1.4
|
|
Kevin K.
|
|
tests stuff
|
|
|
|
USAGE:
|
|
test [OPTIONS]
|
|
|
|
OPTIONS:
|
|
-F, --flag2 some other flag
|
|
--option <opt> some option
|
|
-h, --help Print help information
|
|
-V, --version Print version information
|
|
";
|
|
|
|
#[test]
|
|
fn hide_args() {
|
|
let cmd = Command::new("test")
|
|
.author("Kevin K.")
|
|
.about("tests stuff")
|
|
.version("1.4")
|
|
.args(&[
|
|
arg!(-f --flag "some flag").hide(true),
|
|
arg!(-F --flag2 "some other flag"),
|
|
arg!(--option <opt> "some option").required(false),
|
|
Arg::new("DUMMY").hide(true),
|
|
]);
|
|
utils::assert_output(cmd, "test --help", HIDDEN_ARGS, false);
|
|
}
|
|
|
|
static HIDDEN_SHORT_ARGS: &str = "test 2.31.2
|
|
Steve P.
|
|
hides short args
|
|
|
|
USAGE:
|
|
test [OPTIONS]
|
|
|
|
OPTIONS:
|
|
-v, --visible This text should be visible
|
|
-h, --help Print help information
|
|
-V, --version Print version information
|
|
";
|
|
|
|
/// Ensure hide with short option
|
|
#[test]
|
|
fn hide_short_args() {
|
|
let cmd = Command::new("test")
|
|
.about("hides short args")
|
|
.author("Steve P.")
|
|
.version("2.31.2")
|
|
.args(&[
|
|
Arg::new("cfg")
|
|
.short('c')
|
|
.long("config")
|
|
.hide_short_help(true)
|
|
.action(ArgAction::SetTrue)
|
|
.help("Some help text describing the --config arg"),
|
|
Arg::new("visible")
|
|
.short('v')
|
|
.long("visible")
|
|
.action(ArgAction::SetTrue)
|
|
.help("This text should be visible"),
|
|
]);
|
|
|
|
utils::assert_output(cmd, "test -h", HIDDEN_SHORT_ARGS, false);
|
|
}
|
|
|
|
/// Ensure visible with opposite option
|
|
#[test]
|
|
fn hide_short_args_long_help() {
|
|
static HIDDEN_SHORT_ARGS_LONG_HELP: &str = "test 2.31.2
|
|
Steve P.
|
|
hides short args
|
|
|
|
USAGE:
|
|
test [OPTIONS]
|
|
|
|
OPTIONS:
|
|
-c, --config
|
|
Some help text describing the --config arg
|
|
|
|
-v, --visible
|
|
This text should be visible
|
|
|
|
-h, --help
|
|
Print help information
|
|
|
|
-V, --version
|
|
Print version information
|
|
";
|
|
|
|
let cmd = Command::new("test")
|
|
.about("hides short args")
|
|
.author("Steve P.")
|
|
.version("2.31.2")
|
|
.args(&[
|
|
Arg::new("cfg")
|
|
.short('c')
|
|
.long("config")
|
|
.hide_short_help(true)
|
|
.action(ArgAction::SetTrue)
|
|
.help("Some help text describing the --config arg"),
|
|
Arg::new("visible")
|
|
.short('v')
|
|
.long("visible")
|
|
.action(ArgAction::SetTrue)
|
|
.help("This text should be visible"),
|
|
]);
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_SHORT_ARGS_LONG_HELP, false);
|
|
}
|
|
|
|
static HIDDEN_LONG_ARGS: &str = "test 2.31.2
|
|
Steve P.
|
|
hides long args
|
|
|
|
USAGE:
|
|
test [OPTIONS]
|
|
|
|
OPTIONS:
|
|
-v, --visible
|
|
This text should be visible
|
|
|
|
-h, --help
|
|
Print help information
|
|
|
|
-V, --version
|
|
Print version information
|
|
";
|
|
|
|
#[test]
|
|
fn hide_long_args() {
|
|
let cmd = Command::new("test")
|
|
.about("hides long args")
|
|
.author("Steve P.")
|
|
.version("2.31.2")
|
|
.args(&[
|
|
Arg::new("cfg")
|
|
.short('c')
|
|
.long("config")
|
|
.hide_long_help(true)
|
|
.action(ArgAction::SetTrue)
|
|
.help("Some help text describing the --config arg"),
|
|
Arg::new("visible")
|
|
.short('v')
|
|
.long("visible")
|
|
.action(ArgAction::SetTrue)
|
|
.help("This text should be visible"),
|
|
]);
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_LONG_ARGS, false);
|
|
}
|
|
|
|
static HIDDEN_LONG_ARGS_SHORT_HELP: &str = "test 2.31.2
|
|
Steve P.
|
|
hides long args
|
|
|
|
USAGE:
|
|
test [OPTIONS]
|
|
|
|
OPTIONS:
|
|
-c, --config Some help text describing the --config arg
|
|
-v, --visible This text should be visible
|
|
-h, --help Print help information
|
|
-V, --version Print version information
|
|
";
|
|
|
|
#[test]
|
|
fn hide_long_args_short_help() {
|
|
let cmd = Command::new("test")
|
|
.about("hides long args")
|
|
.author("Steve P.")
|
|
.version("2.31.2")
|
|
.args(&[
|
|
Arg::new("cfg")
|
|
.short('c')
|
|
.long("config")
|
|
.hide_long_help(true)
|
|
.action(ArgAction::SetTrue)
|
|
.help("Some help text describing the --config arg"),
|
|
Arg::new("visible")
|
|
.short('v')
|
|
.long("visible")
|
|
.action(ArgAction::SetTrue)
|
|
.help("This text should be visible"),
|
|
]);
|
|
|
|
utils::assert_output(cmd, "test -h", HIDDEN_LONG_ARGS_SHORT_HELP, false);
|
|
}
|
|
|
|
static HIDDEN_POS_ARGS: &str = "test 1.4
|
|
|
|
USAGE:
|
|
test [another]
|
|
|
|
ARGS:
|
|
<another> another pos
|
|
|
|
OPTIONS:
|
|
-h, --help Print help information
|
|
-V, --version Print version information
|
|
";
|
|
|
|
#[test]
|
|
fn hide_pos_args() {
|
|
let cmd = Command::new("test").version("1.4").args(&[
|
|
Arg::new("pos").help("some pos").hide(true),
|
|
Arg::new("another").help("another pos"),
|
|
]);
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_POS_ARGS, false);
|
|
}
|
|
|
|
static HIDDEN_SUBCMDS: &str = "test 1.4
|
|
|
|
USAGE:
|
|
test
|
|
|
|
OPTIONS:
|
|
-h, --help Print help information
|
|
-V, --version Print version information
|
|
";
|
|
|
|
#[test]
|
|
fn hide_subcmds() {
|
|
let cmd = Command::new("test")
|
|
.version("1.4")
|
|
.subcommand(Command::new("sub").hide(true));
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_SUBCMDS, false);
|
|
}
|
|
|
|
static HIDDEN_OPT_ARGS_ONLY: &str = "test 1.4
|
|
|
|
USAGE:
|
|
test
|
|
|
|
After help
|
|
";
|
|
|
|
#[test]
|
|
fn hide_opt_args_only() {
|
|
let cmd = Command::new("test")
|
|
.version("1.4")
|
|
.after_help("After help")
|
|
.disable_help_flag(true)
|
|
.disable_version_flag(true)
|
|
.arg(arg!(-h - -help).action(ArgAction::Help).hide(true))
|
|
.arg(arg!(-v - -version).hide(true))
|
|
.arg(
|
|
arg!(--option <opt> "some option")
|
|
.required(false)
|
|
.hide(true),
|
|
);
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_OPT_ARGS_ONLY, false);
|
|
}
|
|
|
|
static HIDDEN_POS_ARGS_ONLY: &str = "test 1.4
|
|
|
|
USAGE:
|
|
test
|
|
|
|
After help
|
|
";
|
|
|
|
#[test]
|
|
fn hide_pos_args_only() {
|
|
let cmd = Command::new("test")
|
|
.version("1.4")
|
|
.after_help("After help")
|
|
.disable_help_flag(true)
|
|
.disable_version_flag(true)
|
|
.arg(arg!(-h - -help).action(ArgAction::Help).hide(true))
|
|
.arg(arg!(-v - -version).hide(true))
|
|
.args(&[Arg::new("pos").help("some pos").hide(true)]);
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_POS_ARGS_ONLY, false);
|
|
}
|
|
|
|
static HIDDEN_SUBCMDS_ONLY: &str = "test 1.4
|
|
|
|
USAGE:
|
|
test
|
|
|
|
After help
|
|
";
|
|
|
|
#[test]
|
|
fn hide_subcmds_only() {
|
|
let cmd = Command::new("test")
|
|
.version("1.4")
|
|
.after_help("After help")
|
|
.disable_help_flag(true)
|
|
.disable_version_flag(true)
|
|
.arg(arg!(-h - -help).action(ArgAction::Help).hide(true))
|
|
.arg(arg!(-v - -version).hide(true))
|
|
.subcommand(Command::new("sub").hide(true));
|
|
|
|
utils::assert_output(cmd, "test --help", HIDDEN_SUBCMDS_ONLY, false);
|
|
}
|