clap/tests/hidden_args.rs
Logan SQUIREL 3c049b4e22
Fix compatibility with help2man output (see #1432)
Change default help template:
- The new template introduce new lines before and after
author/about sections.
- Add help template placeholders:
    - about-section
    - author-section
- Documentation of new placeholders in clap::App::help_template
- Update all unit tests by incorporating new lines
2021-02-27 16:20:52 +01:00

414 lines
8.5 KiB
Rust

mod utils;
use clap::{App, AppSettings, Arg};
static HIDDEN_ARGS: &str = "test 1.4
Kevin K.
tests stuff
USAGE:
test [FLAGS] [OPTIONS]
FLAGS:
-F, --flag2 some other flag
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
--option <opt> some option";
#[test]
fn hidden_args() {
let app = App::new("test")
.author("Kevin K.")
.about("tests stuff")
.version("1.4")
.args(&[
Arg::from("-f, --flag 'some flag'").hidden(true),
Arg::from("-F, --flag2 'some other flag'"),
Arg::from("--option [opt] 'some option'"),
Arg::new("DUMMY").hidden(true),
]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_ARGS,
false
));
}
static HIDDEN_SHORT_ARGS: &str = "test 2.31.2
Steve P.
hides short args
USAGE:
test [FLAGS]
FLAGS:
-h, --help Prints help information
-v, --visible This text should be visible
-V, --version Prints version information";
static HIDDEN_SHORT_ARGS_LONG_HELP: &str = "test 2.31.2
Steve P.
hides short args
USAGE:
test [FLAGS]
FLAGS:
-c, --config
Some help text describing the --config arg
-h, --help
Prints help information
-v, --visible
This text should be visible
-V, --version
Prints version information";
/// Ensure hidden with short option
#[test]
fn hidden_short_args() {
let app = App::new("test")
.about("hides short args")
.author("Steve P.")
.version("2.31.2")
.args(&[
Arg::new("cfg")
.short('c')
.long("config")
.hidden_short_help(true)
.about("Some help text describing the --config arg"),
Arg::new("visible")
.short('v')
.long("visible")
.about("This text should be visible"),
]);
assert!(utils::compare_output(
app,
"test -h",
HIDDEN_SHORT_ARGS,
false
));
}
/// Ensure visible with opposite option
#[test]
fn hidden_short_args_long_help() {
let app = App::new("test")
.about("hides short args")
.author("Steve P.")
.version("2.31.2")
.args(&[
Arg::new("cfg")
.short('c')
.long("config")
.hidden_short_help(true)
.about("Some help text describing the --config arg"),
Arg::new("visible")
.short('v')
.long("visible")
.about("This text should be visible"),
]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_SHORT_ARGS_LONG_HELP,
false
));
}
static HIDDEN_LONG_ARGS: &str = "test 2.31.2
Steve P.
hides long args
USAGE:
test [FLAGS]
FLAGS:
-h, --help
Prints help information
-v, --visible
This text should be visible
-V, --version
Prints version information";
#[test]
fn hidden_long_args() {
let app = App::new("test")
.about("hides long args")
.author("Steve P.")
.version("2.31.2")
.args(&[
Arg::new("cfg")
.short('c')
.long("config")
.hidden_long_help(true)
.about("Some help text describing the --config arg"),
Arg::new("visible")
.short('v')
.long("visible")
.about("This text should be visible"),
]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_LONG_ARGS,
false
));
}
static HIDDEN_LONG_ARGS_SHORT_HELP: &str = "test 2.31.2
Steve P.
hides long args
USAGE:
test [FLAGS]
FLAGS:
-c, --config Some help text describing the --config arg
-h, --help Prints help information
-v, --visible This text should be visible
-V, --version Prints version information";
#[test]
fn hidden_long_args_short_help() {
let app = App::new("test")
.about("hides long args")
.author("Steve P.")
.version("2.31.2")
.args(&[
Arg::new("cfg")
.short('c')
.long("config")
.hidden_long_help(true)
.about("Some help text describing the --config arg"),
Arg::new("visible")
.short('v')
.long("visible")
.about("This text should be visible"),
]);
assert!(utils::compare_output(
app,
"test -h",
HIDDEN_LONG_ARGS_SHORT_HELP,
false
));
}
static HIDDEN_FLAG_ARGS: &str = "test 1.4
USAGE:
test [OPTIONS]
OPTIONS:
--option <opt> some option";
#[test]
fn hidden_flag_args() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.mut_arg("help", |a| a.hidden(true))
.args(&[Arg::from("--option [opt] 'some option'")]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_FLAG_ARGS,
false
));
}
static HIDDEN_OPT_ARGS: &str = "test 1.4
USAGE:
test [FLAGS]
FLAGS:
--flag some flag
-h, --help Prints help information";
#[test]
fn hidden_opt_args() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.args(&[
Arg::from("--flag 'some flag'"),
Arg::from("--option [opt] 'some option'").hidden(true),
]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_OPT_ARGS,
false
));
}
static HIDDEN_POS_ARGS: &str = "test 1.4
USAGE:
test [another]
ARGS:
<another> another pos
FLAGS:
-h, --help Prints help information";
#[test]
fn hidden_pos_args() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.args(&[
Arg::new("pos").about("some pos").hidden(true),
Arg::new("another").about("another pos"),
]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_POS_ARGS,
false
));
}
static HIDDEN_SUBCMDS: &str = "test 1.4
USAGE:
test
FLAGS:
-h, --help Prints help information";
#[test]
fn hidden_subcmds() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.subcommand(App::new("sub").setting(AppSettings::Hidden));
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_SUBCMDS,
false
));
}
static HIDDEN_FLAG_ARGS_ONLY: &str = "test 1.4
USAGE:
test
After help";
#[test]
fn hidden_flag_args_only() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.after_help("After help")
.mut_arg("help", |a| a.hidden(true));
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_FLAG_ARGS_ONLY,
false
));
}
static HIDDEN_OPT_ARGS_ONLY: &str = "test 1.4
USAGE:
test
After help";
#[test]
fn hidden_opt_args_only() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.after_help("After help")
.mut_arg("help", |a| a.hidden(true))
.args(&[Arg::from("--option [opt] 'some option'").hidden(true)]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_OPT_ARGS_ONLY,
false
));
}
static HIDDEN_POS_ARGS_ONLY: &str = "test 1.4
USAGE:
test
After help";
#[test]
fn hidden_pos_args_only() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.after_help("After help")
.mut_arg("help", |a| a.hidden(true))
.args(&[Arg::new("pos").about("some pos").hidden(true)]);
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_POS_ARGS_ONLY,
false
));
}
static HIDDEN_SUBCMDS_ONLY: &str = "test 1.4
USAGE:
test
After help";
#[test]
fn hidden_subcmds_only() {
let app = App::new("test")
.version("1.4")
.setting(AppSettings::DisableVersionFlag)
.after_help("After help")
.mut_arg("help", |a| a.hidden(true))
.subcommand(App::new("sub").setting(AppSettings::Hidden));
assert!(utils::compare_output(
app,
"test --help",
HIDDEN_SUBCMDS_ONLY,
false
));
}