diff options
Diffstat (limited to 'clap/tests/help.rs')
-rw-r--r-- | clap/tests/help.rs | 1205 |
1 files changed, 0 insertions, 1205 deletions
diff --git a/clap/tests/help.rs b/clap/tests/help.rs deleted file mode 100644 index 4b15281..0000000 --- a/clap/tests/help.rs +++ /dev/null @@ -1,1205 +0,0 @@ -#[macro_use] -extern crate clap; -extern crate regex; - -include!("../clap-test.rs"); - -use clap::{App, AppSettings, SubCommand, ErrorKind, Arg}; - -static REQUIRE_DELIM_HELP: &'static str = "test 1.3 -Kevin K. -tests stuff - -USAGE: - test --fake <some>:<val> - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -f, --fake <some>:<val> some help"; - -static HELP: &'static str = "clap-test v1.4.8 -Kevin K. <kbknapp@gmail.com> -tests clap library - -USAGE: - clap-test [FLAGS] [OPTIONS] [ARGS] [SUBCOMMAND] - -FLAGS: - -f, --flag tests flags - -F tests flags with exclusions - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -O, --Option <option3> specific vals [possible values: fast, slow] - --long-option-2 <option2> tests long options with exclusions - --maxvals3 <maxvals>... Tests 3 max vals - --minvals2 <minvals>... Tests 2 min vals - --multvals <one> <two> Tests multiple values, not mult occs - --multvalsmo <one> <two> Tests multiple values, and mult occs - -o, --option <opt>... tests options - -ARGS: - <positional> tests positionals - <positional2> tests positionals with exclusions - <positional3>... tests specific values [possible values: vi, emacs] - -SUBCOMMANDS: - help Prints this message or the help of the given subcommand(s) - subcmd tests subcommands"; - -static SC_NEGATES_REQS: &'static str = "prog 1.0 - -USAGE: - prog --opt <FILE> [PATH] - prog [PATH] <SUBCOMMAND> - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -o, --opt <FILE> tests options - -ARGS: - <PATH> help - -SUBCOMMANDS: - help Prints this message or the help of the given subcommand(s) - test"; - -static ARGS_NEGATE_SC: &'static str = "prog 1.0 - -USAGE: - prog [FLAGS] [OPTIONS] [PATH] - prog <SUBCOMMAND> - -FLAGS: - -f, --flag testing flags - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -o, --opt <FILE> tests options - -ARGS: - <PATH> help - -SUBCOMMANDS: - help Prints this message or the help of the given subcommand(s) - test"; - -static AFTER_HELP: &'static str = "some text that comes before the help - -clap-test v1.4.8 -tests clap library - -USAGE: - clap-test - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -some text that comes after the help"; - -static HIDDEN_ARGS: &'static str = "prog 1.0 - -USAGE: - prog [FLAGS] [OPTIONS] - -FLAGS: - -f, --flag testing flags - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -o, --opt <FILE> tests options"; - -static SC_HELP: &'static str = "clap-test-subcmd 0.1 -Kevin K. <kbknapp@gmail.com> -tests subcommands - -USAGE: - clap-test subcmd [FLAGS] [OPTIONS] [--] [scpositional] - -FLAGS: - -f, --flag tests flags - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -o, --option <scoption>... tests options - -s, --subcmdarg <subcmdarg> tests other args - -ARGS: - <scpositional> tests positionals"; - -static ISSUE_1046_HIDDEN_SCS: &'static str = "prog 1.0 - -USAGE: - prog [FLAGS] [OPTIONS] [PATH] - -FLAGS: - -f, --flag testing flags - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -o, --opt <FILE> tests options - -ARGS: - <PATH> some"; - -// Using number_of_values(1) with multiple(true) misaligns help message -static ISSUE_760: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -O, --opt <opt> tests options - -o, --option <option>... tests options"; - -static RIPGREP_USAGE: &'static str = "ripgrep 0.5 - -USAGE: - rg [OPTIONS] <pattern> [<path> ...] - rg [OPTIONS] [-e PATTERN | -f FILE ]... [<path> ...] - rg [OPTIONS] --files [<path> ...] - rg [OPTIONS] --type-list - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information"; - - -static MULTI_SC_HELP: &'static str = "ctest-subcmd-multi 0.1 -Kevin K. <kbknapp@gmail.com> -tests subcommands - -USAGE: - ctest subcmd multi [FLAGS] [OPTIONS] - -FLAGS: - -f, --flag tests flags - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -o, --option <scoption>... tests options"; - -static ISSUE_626_CUTOFF: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -c, --cafe <FILE> A coffeehouse, coffee shop, or café is an - establishment which primarily serves hot - coffee, related coffee beverages (e.g., café - latte, cappuccino, espresso), tea, and other - hot beverages. Some coffeehouses also serve - cold beverages such as iced coffee and iced - tea. Many cafés also serve some type of food, - such as light snacks, muffins, or pastries."; - -static ISSUE_626_PANIC: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -c, --cafe <FILE> - La culture du café est très développée - dans de nombreux pays à climat chaud - d\'Amérique, d\'Afrique et d\'Asie, dans - des plantations qui sont cultivées pour - les marchés d\'exportation. Le café est - souvent une contribution majeure aux - exportations des régions productrices."; - -static HIDE_POS_VALS: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -c, --cafe <FILE> A coffeehouse, coffee shop, or café. - -p, --pos <VAL> Some vals [possible values: fast, slow]"; - -static FINAL_WORD_WRAPPING: &'static str = "ctest 0.1 - -USAGE: - ctest - -FLAGS: - -h, --help - Prints help - information - -V, --version - Prints - version - information"; - -static OLD_NEWLINE_CHARS: &'static str = "ctest 0.1 - -USAGE: - ctest [FLAGS] - -FLAGS: - -h, --help Prints help information - -m Some help with some wrapping - (Defaults to something) - -V, --version Prints version information"; - -static WRAPPING_NEWLINE_CHARS: &'static str = "ctest 0.1 - -USAGE: - ctest [mode] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -ARGS: - <mode> x, max, maximum 20 characters, contains - symbols. - l, long Copy-friendly, 14 - characters, contains symbols. - m, med, medium Copy-friendly, 8 - characters, contains symbols."; - -static ISSUE_688: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - --filter <filter> Sets the filter, or sampling method, to use for interpolation when resizing the particle - images. The default is Linear (Bilinear). [possible values: Nearest, Linear, Cubic, - Gaussian, Lanczos3]"; - -static ISSUE_702: &'static str = "myapp 1.0 -foo -bar - -USAGE: - myapp [OPTIONS] [--] [ARGS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -l, --label <label>... a label - -o, --other <other> some other option - -s, --some <some> some option - -ARGS: - <arg1> some option - <arg2>... some option"; - -static ISSUE_777: &'static str = "A app with a crazy very long long -long name hahaha 1.0 -Some Very Long Name and crazy long -email <email@server.com> -Show how the about text is not -wrapped - -USAGE: - ctest - -FLAGS: - -h, --help - Prints help information - - -V, --version - Prints version - information"; - -static CUSTOM_VERSION_AND_HELP: &'static str = "customize 0.1 -Nobody <odysseus@example.com> -You can customize the version and help text - -USAGE: - customize - -FLAGS: - -H, --help Print help information - -v, --version Print version information"; - -static LAST_ARG: &'static str = "last 0.1 - -USAGE: - last <TARGET> [CORPUS] [-- <ARGS>...] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -ARGS: - <TARGET> some - <CORPUS> some - <ARGS>... some"; - -static LAST_ARG_SC: &'static str = "last 0.1 - -USAGE: - last <TARGET> [CORPUS] [-- <ARGS>...] - last <SUBCOMMAND> - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -ARGS: - <TARGET> some - <CORPUS> some - <ARGS>... some - -SUBCOMMANDS: - help Prints this message or the help of the given subcommand(s) - test some"; - -static LAST_ARG_REQ: &'static str = "last 0.1 - -USAGE: - last <TARGET> [CORPUS] -- <ARGS>... - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -ARGS: - <TARGET> some - <CORPUS> some - <ARGS>... some"; - -static LAST_ARG_REQ_SC: &'static str = "last 0.1 - -USAGE: - last <TARGET> [CORPUS] -- <ARGS>... - last <SUBCOMMAND> - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -ARGS: - <TARGET> some - <CORPUS> some - <ARGS>... some - -SUBCOMMANDS: - help Prints this message or the help of the given subcommand(s) - test some"; - -static HIDE_DEFAULT_VAL: &'static str = "default 0.1 - -USAGE: - default [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - --arg <argument> Pass an argument to the program. [default: default-argument]"; - -static LAST_ARG_USAGE: &'static str = "flamegraph 0.1 - -USAGE: - flamegraph [FLAGS] [OPTIONS] [BINFILE] [-- <ARGS>...] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -v, --verbose Prints out more stuff. - -OPTIONS: - -f, --frequency <HERTZ> The sampling frequency. - -t, --timeout <SECONDS> Timeout in seconds. - -ARGS: - <BINFILE> The path of the binary to be profiled. for a binary. - <ARGS>... Any arguments you wish to pass to the being profiled."; - -static LAST_ARG_REQ_MULT: &'static str = "example 1.0 - -USAGE: - example <FIRST>... [--] <SECOND>... - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -ARGS: - <FIRST>... First - <SECOND>... Second"; - -static DEFAULT_HELP: &'static str = "ctest 1.0 - -USAGE: - ctest - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information"; - -static LONG_ABOUT: &'static str = "myapp 1.0 -foo -something really really long, with -multiple lines of text -that should be displayed - -USAGE: - myapp [arg1] - -FLAGS: - -h, --help - Prints help information - - -V, --version - Prints version information - - -ARGS: - <arg1> - some option"; - -static HIDE_ENV_VALS: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -c, --cafe <FILE> A coffeehouse, coffee shop, or café. [env: ENVVAR] - -p, --pos <VAL> Some vals [possible values: fast, slow]"; - -static SHOW_ENV_VALS: &'static str = "ctest 0.1 - -USAGE: - ctest [OPTIONS] - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information - -OPTIONS: - -c, --cafe <FILE> A coffeehouse, coffee shop, or café. [env: ENVVAR=MYVAL] - -p, --pos <VAL> Some vals [possible values: fast, slow]"; - -fn setup() -> App<'static, 'static> { - App::new("test") - .author("Kevin K.") - .about("tests stuff") - .version("1.3") -} - -#[test] -fn help_short() { - let m = setup() - .get_matches_from_safe(vec!["myprog", "-h"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::HelpDisplayed); -} - -#[test] -fn help_long() { - let m = setup() - .get_matches_from_safe(vec!["myprog", "--help"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::HelpDisplayed); -} - -#[test] -fn help_no_subcommand() { - let m = setup() - .get_matches_from_safe(vec!["myprog", "help"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::UnknownArgument); -} - -#[test] -fn help_subcommand() { - let m = setup() - .subcommand(SubCommand::with_name("test") - .about("tests things") - .arg_from_usage("-v --verbose 'with verbosity'")) - .get_matches_from_safe(vec!["myprog", "help"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::HelpDisplayed); -} - -#[test] -fn req_last_arg_usage() { - let app = clap_app!(example => - (version: "1.0") - (@arg FIRST: ... * "First") - (@arg SECOND: ... * +last "Second") - ); - assert!(test::compare_output(app, "example --help", LAST_ARG_REQ_MULT, false)); -} - -#[test] -fn args_with_last_usage() { - let app = App::new("flamegraph") - .version("0.1") - .setting(AppSettings::TrailingVarArg) - .arg(Arg::with_name("verbose") - .help("Prints out more stuff.") - .short("v") - .long("verbose") - .multiple(true) - ) - .arg(Arg::with_name("timeout") - .help("Timeout in seconds.") - .short("t") - .long("timeout") - .value_name("SECONDS") - .takes_value(true) - ) - .arg(Arg::with_name("frequency") - .help("The sampling frequency.") - .short("f") - .long("frequency") - .value_name("HERTZ") - .takes_value(true) - ) - .arg(Arg::with_name("binary path") - .help("The path of the binary to be profiled. for a binary.") - .takes_value(true) - .value_name("BINFILE") - ) - .arg(Arg::with_name("pass through args") - .help("Any arguments you wish to pass to the being profiled.") - .value_name("ARGS") - .last(true) - .multiple(true) - ); - assert!(test::compare_output(app, "flamegraph --help", LAST_ARG_USAGE, false)); -} - -#[test] -fn subcommand_short_help() { - let m = test::complex_app().get_matches_from_safe(vec!["clap-test", "subcmd", "-h"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::HelpDisplayed); -} - -#[test] -fn subcommand_long_help() { - let m = test::complex_app().get_matches_from_safe(vec!["clap-test", "subcmd", "--help"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::HelpDisplayed); -} - -#[test] -fn subcommand_help_rev() { - let m = test::complex_app().get_matches_from_safe(vec!["clap-test", "help", "subcmd"]); - - assert!(m.is_err()); - assert_eq!(m.unwrap_err().kind, ErrorKind::HelpDisplayed); -} - -#[test] -fn complex_help_output() { - assert!(test::compare_output(test::complex_app(), "clap-test --help", HELP, false)); -} - -#[test] -fn after_and_before_help_output() { - let app = App::new("clap-test") - .version("v1.4.8") - .about("tests clap library") - .before_help("some text that comes before the help") - .after_help("some text that comes after the help"); - assert!(test::compare_output(app, "clap-test --help", AFTER_HELP, false)); -} - -#[test] -fn multi_level_sc_help() { - let app = App::new("ctest") - .subcommand(SubCommand::with_name("subcmd").subcommand(SubCommand::with_name("multi") - .about("tests subcommands") - .author("Kevin K. <kbknapp@gmail.com>") - .version("0.1") - .args_from_usage(" - -f, --flag 'tests flags' - -o, --option [scoption]... 'tests options' - "))); - assert!(test::compare_output(app, "ctest help subcmd multi", MULTI_SC_HELP, false)); -} - -#[test] -fn no_wrap_help() { - let app = App::new("ctest") - .set_term_width(0) - .help(MULTI_SC_HELP); - assert!(test::compare_output(app, "ctest --help", MULTI_SC_HELP, false)); -} - -#[test] -fn no_wrap_default_help() { - let app = App::new("ctest").version("1.0").set_term_width(0); - assert!(test::compare_output(app, "ctest --help", DEFAULT_HELP, false)); -} - -#[test] -fn complex_subcommand_help_output() { - let a = test::complex_app(); - assert!(test::compare_output(a, "clap-test subcmd --help", SC_HELP, false)); -} - - -#[test] -fn issue_626_unicode_cutoff() { - let app = App::new("ctest") - .version("0.1") - .set_term_width(70) - .arg(Arg::with_name("cafe") - .short("c") - .long("cafe") - .value_name("FILE") - .help("A coffeehouse, coffee shop, or café is an establishment \ - which primarily serves hot coffee, related coffee beverages \ - (e.g., café latte, cappuccino, espresso), tea, and other hot \ - beverages. Some coffeehouses also serve cold beverages such as \ - iced coffee and iced tea. Many cafés also serve some type of \ - food, such as light snacks, muffins, or pastries.") - .takes_value(true)); - assert!(test::compare_output(app, "ctest --help", ISSUE_626_CUTOFF, false)); -} - -#[test] -fn hide_possible_vals() { - let app = App::new("ctest") - .version("0.1") - .arg(Arg::with_name("pos") - .short("p") - .long("pos") - .value_name("VAL") - .possible_values(&["fast", "slow"]) - .help("Some vals") - .takes_value(true)) - .arg(Arg::with_name("cafe") - .short("c") - .long("cafe") - .value_name("FILE") - .hide_possible_values(true) - .possible_values(&["fast", "slow"]) - .help("A coffeehouse, coffee shop, or café.") - .takes_value(true)); - assert!(test::compare_output(app, "ctest --help", HIDE_POS_VALS, false)); -} - -#[test] -fn issue_626_panic() { - let app = App::new("ctest") - .version("0.1") - .set_term_width(52) - .arg(Arg::with_name("cafe") - .short("c") - .long("cafe") - .value_name("FILE") - .help("La culture du café est très développée dans de nombreux pays à climat chaud d'Amérique, \ - d'Afrique et d'Asie, dans des plantations qui sont cultivées pour les marchés d'exportation. \ - Le café est souvent une contribution majeure aux exportations des régions productrices.") - .takes_value(true)); - assert!(test::compare_output(app, "ctest --help", ISSUE_626_PANIC, false)); -} - -#[test] -fn issue_626_variable_panic() { - for i in 10..320 { - let _ = App::new("ctest") - .version("0.1") - .set_term_width(i) - .arg(Arg::with_name("cafe") - .short("c") - .long("cafe") - .value_name("FILE") - .help("La culture du café est très développée dans de nombreux pays à climat chaud d'Amérique, \ - d'Afrique et d'Asie, dans des plantations qui sont cultivées pour les marchés d'exportation. \ - Le café est souvent une contribution majeure aux exportations des régions productrices.") - .takes_value(true)) - .get_matches_from_safe(vec!["ctest", "--help"]); - } -} - -#[test] -fn final_word_wrapping() { - let app = App::new("ctest").version("0.1").set_term_width(24); - assert!(test::compare_output(app, "ctest --help", FINAL_WORD_WRAPPING, false)); -} - -#[test] -fn wrapping_newline_chars() { - let app = App::new("ctest") - .version("0.1") - .set_term_width(60) - .arg(Arg::with_name("mode") - .help("x, max, maximum 20 characters, contains symbols.{n}\ - l, long Copy-friendly, 14 characters, contains symbols.{n}\ - m, med, medium Copy-friendly, 8 characters, contains symbols.{n}")); - assert!(test::compare_output(app, "ctest --help", WRAPPING_NEWLINE_CHARS, false)); -} - -#[test] -fn old_newline_chars() { - let app = App::new("ctest") - .version("0.1") - .arg(Arg::with_name("mode") - .short("m") - .help("Some help with some wrapping{n}(Defaults to something)")); - assert!(test::compare_output(app, "ctest --help", OLD_NEWLINE_CHARS, false)); -} - -#[test] -fn issue_688_hidden_pos_vals() { - let filter_values = ["Nearest", "Linear", "Cubic", "Gaussian", "Lanczos3"]; - - let app1 = App::new("ctest") - .version("0.1") - .set_term_width(120) - .setting(AppSettings::HidePossibleValuesInHelp) - .arg(Arg::with_name("filter") - .help("Sets the filter, or sampling method, to use for interpolation when resizing the particle \ - images. The default is Linear (Bilinear). [possible values: Nearest, Linear, Cubic, Gaussian, Lanczos3]") - .long("filter") - .possible_values(&filter_values) - .takes_value(true)); - assert!(test::compare_output(app1, "ctest --help", ISSUE_688, false)); - - let app2 = App::new("ctest") - .version("0.1") - .set_term_width(120) - .arg(Arg::with_name("filter") - .help("Sets the filter, or sampling method, to use for interpolation when resizing the particle \ - images. The default is Linear (Bilinear).") - .long("filter") - .possible_values(&filter_values) - .takes_value(true)); - assert!(test::compare_output(app2, "ctest --help", ISSUE_688, false)); - - let app3 = App::new("ctest") - .version("0.1") - .set_term_width(120) - .arg(Arg::with_name("filter") - .help("Sets the filter, or sampling method, to use for interpolation when resizing the particle \ - images. The default is Linear (Bilinear). [possible values: Nearest, Linear, Cubic, Gaussian, Lanczos3]") - .long("filter") - .takes_value(true)); - assert!(test::compare_output(app3, "ctest --help", ISSUE_688, false)); -} - -#[test] -fn issue_702_multiple_values() { - let app = App::new("myapp") - .version("1.0") - .author("foo") - .about("bar") - .arg(Arg::with_name("arg1").help("some option")) - .arg(Arg::with_name("arg2") - .multiple(true) - .help("some option")) - .arg(Arg::with_name("some") - .help("some option") - .short("s") - .long("some") - .takes_value(true)) - .arg(Arg::with_name("other") - .help("some other option") - .short("o") - .long("other") - .takes_value(true)) - .arg(Arg::with_name("label") - .help("a label") - .short("l") - .long("label") - .multiple(true) - .takes_value(true)); - assert!(test::compare_output(app, "myapp --help", ISSUE_702, false)); -} - -#[test] -fn long_about() { - let app = App::new("myapp") - .version("1.0") - .author("foo") - .about("bar") - .long_about("something really really long, with\nmultiple lines of text\nthat should be displayed") - .arg(Arg::with_name("arg1").help("some option")); - assert!(test::compare_output(app, "myapp --help", LONG_ABOUT, false)); -} - -#[test] -fn issue_760() { - let app = App::new("ctest") - .version("0.1") - .arg(Arg::with_name("option") - .help("tests options") - .short("o") - .long("option") - .takes_value(true) - .multiple(true) - .number_of_values(1)) - .arg(Arg::with_name("opt") - .help("tests options") - .short("O") - .long("opt") - .takes_value(true)); - assert!(test::compare_output(app, "ctest --help", ISSUE_760, false)); -} - -#[test] -fn ripgrep_usage() { - let app = App::new("ripgrep") - .version("0.5") - .usage("rg [OPTIONS] <pattern> [<path> ...] - rg [OPTIONS] [-e PATTERN | -f FILE ]... [<path> ...] - rg [OPTIONS] --files [<path> ...] - rg [OPTIONS] --type-list"); - - assert!(test::compare_output(app, "rg --help", RIPGREP_USAGE, false)); -} - -#[test] -fn ripgrep_usage_using_templates() { - let app = App::new("ripgrep") - .version("0.5") - .usage(" - rg [OPTIONS] <pattern> [<path> ...] - rg [OPTIONS] [-e PATTERN | -f FILE ]... [<path> ...] - rg [OPTIONS] --files [<path> ...] - rg [OPTIONS] --type-list") - .template("\ -{bin} {version} - -USAGE:{usage} - -FLAGS: -{flags}"); - - assert!(test::compare_output(app, "rg --help", RIPGREP_USAGE, false)); -} - -#[test] -fn sc_negates_reqs() { - let app = App::new("prog") - .version("1.0") - .setting(AppSettings::SubcommandsNegateReqs) - .arg_from_usage("-o, --opt <FILE> 'tests options'") - .arg(Arg::with_name("PATH").help("help")) - .subcommand(SubCommand::with_name("test")); - assert!(test::compare_output(app, "prog --help", SC_NEGATES_REQS, false)); -} - -#[test] -fn hidden_args() { - let app = App::new("prog") - .version("1.0") - .args_from_usage("-f, --flag 'testing flags' - -o, --opt [FILE] 'tests options'") - .arg(Arg::with_name("pos").hidden(true)); - assert!(test::compare_output(app, "prog --help", HIDDEN_ARGS, false)); -} - -#[test] -fn args_negate_sc() { - let app = App::new("prog") - .version("1.0") - .setting(AppSettings::ArgsNegateSubcommands) - .args_from_usage("-f, --flag 'testing flags' - -o, --opt [FILE] 'tests options'") - .arg(Arg::with_name("PATH").help("help")) - .subcommand(SubCommand::with_name("test")); - assert!(test::compare_output(app, "prog --help", ARGS_NEGATE_SC, false)); -} - -#[test] -fn issue_1046_hidden_scs() { - let app = App::new("prog") - .version("1.0") - .args_from_usage("-f, --flag 'testing flags' - -o, --opt [FILE] 'tests options'") - .arg(Arg::with_name("PATH").help("some")) - .subcommand(SubCommand::with_name("test").setting(AppSettings::Hidden)); - assert!(test::compare_output(app, "prog --help", ISSUE_1046_HIDDEN_SCS, false)); -} - -#[test] -fn issue_777_wrap_all_things() { - let app = App::new("A app with a crazy very long long long name hahaha") - .version("1.0") - .author("Some Very Long Name and crazy long email <email@server.com>") - .about("Show how the about text is not wrapped") - .set_term_width(35); - assert!(test::compare_output(app, "ctest --help", ISSUE_777, false)); -} - -#[test] -fn customize_version_and_help() { - let app = App::new("customize") - .version("0.1") - .author("Nobody <odysseus@example.com>") - .about("You can customize the version and help text") - .help_short("H") - .help_message("Print help information") - .version_short("v") - .version_message("Print version information"); - assert!(test::compare_output(app, "customize --help", CUSTOM_VERSION_AND_HELP, false)); -} - -#[test] -fn last_arg_mult_usage() { - let app = App::new("last") - .version("0.1") - .arg(Arg::with_name("TARGET").required(true).help("some")) - .arg(Arg::with_name("CORPUS").help("some")) - .arg(Arg::with_name("ARGS").multiple(true).last(true).help("some")); - assert!(test::compare_output(app, "last --help", LAST_ARG, false)); -} - -#[test] -fn last_arg_mult_usage_req() { - let app = App::new("last") - .version("0.1") - .arg(Arg::with_name("TARGET").required(true).help("some")) - .arg(Arg::with_name("CORPUS").help("some")) - .arg(Arg::with_name("ARGS").multiple(true).last(true).required(true).help("some")); - assert!(test::compare_output(app, "last --help", LAST_ARG_REQ, false)); -} - -#[test] -fn last_arg_mult_usage_req_with_sc() { - let app = App::new("last") - .version("0.1") - .setting(AppSettings::SubcommandsNegateReqs) - .arg(Arg::with_name("TARGET").required(true).help("some")) - .arg(Arg::with_name("CORPUS").help("some")) - .arg(Arg::with_name("ARGS").multiple(true).last(true).required(true).help("some")) - .subcommand(SubCommand::with_name("test").about("some")); - assert!(test::compare_output(app, "last --help", LAST_ARG_REQ_SC, false)); -} - -#[test] -fn last_arg_mult_usage_with_sc() { - let app = App::new("last") - .version("0.1") - .setting(AppSettings::ArgsNegateSubcommands) - .arg(Arg::with_name("TARGET").required(true).help("some")) - .arg(Arg::with_name("CORPUS").help("some")) - .arg(Arg::with_name("ARGS").multiple(true).last(true).help("some")) - .subcommand(SubCommand::with_name("test").about("some")); - assert!(test::compare_output(app, "last --help", LAST_ARG_SC, false)); -} - - -#[test] -fn hidden_default_val() { - let app1 = App::new("default") - .version("0.1") - .set_term_width(120) - .arg(Arg::with_name("argument") - .help("Pass an argument to the program. [default: default-argument]") - .long("arg") - .default_value("default-argument") - .hide_default_value(true)); - assert!(test::compare_output(app1, "default --help", HIDE_DEFAULT_VAL, false)); - - let app2 = App::new("default") - .version("0.1") - .set_term_width(120) - .arg(Arg::with_name("argument") - .help("Pass an argument to the program.") - .long("arg") - .default_value("default-argument")); - assert!(test::compare_output(app2, "default --help", HIDE_DEFAULT_VAL, false)); -} - -fn issue_1112_setup() -> App<'static, 'static> { - App::new("test") - .author("Kevin K.") - .about("tests stuff") - .version("1.3") - .arg(Arg::from_usage("-h, --help 'some help'")) - .subcommand(SubCommand::with_name("foo") - .arg(Arg::from_usage("-h, --help 'some help'"))) -} - -#[test] -fn issue_1112_override_help_long() { - let m = issue_1112_setup() - .get_matches_from_safe(vec!["test", "--help"]); - - assert!(m.is_ok()); - assert!(m.unwrap().is_present("help")); -} - -#[test] -fn issue_1112_override_help_short() { - let m = issue_1112_setup() - .get_matches_from_safe(vec!["test", "-h"]); - - assert!(m.is_ok()); - assert!(m.unwrap().is_present("help")); -} - -#[test] -fn issue_1112_override_help_subcmd_long() { - let m = issue_1112_setup() - .get_matches_from_safe(vec!["test", "foo", "--help"]); - - assert!(m.is_ok()); - assert!(m.unwrap().subcommand_matches("foo").unwrap().is_present("help")); -} - -#[test] -fn issue_1112_override_help_subcmd_short() { - let m = issue_1112_setup() - .get_matches_from_safe(vec!["test", "foo", "-h"]); - - assert!(m.is_ok()); - assert!(m.unwrap().subcommand_matches("foo").unwrap().is_present("help")); -} - -#[test] -fn issue_1052_require_delim_help() { - let app = App::new("test") - .author("Kevin K.") - .about("tests stuff") - .version("1.3") - .arg(Arg::from_usage("-f, --fake <some> <val> 'some help'").require_delimiter(true).value_delimiter(":")); - - assert!(test::compare_output(app, "test --help", REQUIRE_DELIM_HELP, false)); -} - -#[test] -fn hide_env_vals() { - use std::env; - - env::set_var("ENVVAR", "MYVAL"); - let app = App::new("ctest") - .version("0.1") - .arg(Arg::with_name("pos") - .short("p") - .long("pos") - .value_name("VAL") - .possible_values(&["fast", "slow"]) - .help("Some vals") - .takes_value(true)) - .arg(Arg::with_name("cafe") - .short("c") - .long("cafe") - .value_name("FILE") - .hide_env_values(true) - .env("ENVVAR") - .help("A coffeehouse, coffee shop, or café.") - .takes_value(true)); - assert!(test::compare_output(app, "ctest --help", HIDE_ENV_VALS, false)); -} - -#[test] -fn show_env_vals() { - use std::env; - - env::set_var("ENVVAR", "MYVAL"); - let app = App::new("ctest") - .version("0.1") - .arg(Arg::with_name("pos") - .short("p") - .long("pos") - .value_name("VAL") - .possible_values(&["fast", "slow"]) - .help("Some vals") - .takes_value(true)) - .arg(Arg::with_name("cafe") - .short("c") - .long("cafe") - .value_name("FILE") - .hide_possible_values(true) - .env("ENVVAR") - .help("A coffeehouse, coffee shop, or café.") - .takes_value(true)); - assert!(test::compare_output(app, "ctest --help", SHOW_ENV_VALS, false)); -} - -static ISSUE_897: &'static str = "ctest-foo 0.1 -Long about foo - -USAGE: - ctest foo - -FLAGS: - -h, --help - Prints help information - - -V, --version - Prints version information"; - -#[test] -fn show_long_about_issue_897() { - let app = App::new("ctest") - .version("0.1") - .subcommand(SubCommand::with_name("foo") - .version("0.1") - .about("About foo") - .long_about("Long about foo")); - assert!(test::compare_output(app, "ctest foo --help", ISSUE_897, false)); -} - -static ISSUE_897_SHORT: &'static str = "ctest-foo 0.1 -Long about foo - -USAGE: - ctest foo - -FLAGS: - -h, --help Prints help information - -V, --version Prints version information"; - -#[test] -fn show_short_about_issue_897() { - let app = App::new("ctest") - .version("0.1") - .subcommand(SubCommand::with_name("foo") - .version("0.1") - .about("About foo") - .long_about("Long about foo")); - assert!(test::compare_output(app, "ctest foo -h", ISSUE_897_SHORT, false)); -} |