mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 23:02:31 +00:00
c402ec61ee
Fixes #3930
261 lines
7.4 KiB
Rust
261 lines
7.4 KiB
Rust
use crate::common;
|
|
use snapbox::assert_data_eq;
|
|
|
|
#[test]
|
|
fn basic() {
|
|
let name = "my-app";
|
|
let cmd = common::basic_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/basic.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn feature_sample() {
|
|
let name = "my-app";
|
|
let cmd = common::feature_sample_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/feature_sample.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn special_commands() {
|
|
let name = "my-app";
|
|
let cmd = common::special_commands_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/special_commands.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn quoting() {
|
|
let name = "my-app";
|
|
let cmd = common::quoting_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/quoting.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn aliases() {
|
|
let name = "my-app";
|
|
let cmd = common::aliases_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/aliases.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn sub_subcommands() {
|
|
let name = "my-app";
|
|
let cmd = common::sub_subcommands_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/sub_subcommands.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn custom_bin_name() {
|
|
let name = "my-app";
|
|
let bin_name = "bin-name";
|
|
let cmd = common::basic_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/custom_bin_name.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
bin_name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn value_hint() {
|
|
let name = "my-app";
|
|
let cmd = common::value_hint_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/value_hint.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn value_terminator() {
|
|
let name = "my-app";
|
|
let cmd = common::value_terminator_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/value_terminator.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn two_multi_valued_arguments() {
|
|
let name = "my-app";
|
|
let cmd = common::two_multi_valued_arguments_command(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/two_multi_valued_arguments.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn subcommand_last() {
|
|
let name = "my-app";
|
|
let cmd = common::subcommand_last(name);
|
|
common::assert_matches(
|
|
snapbox::file!["../snapshots/subcommand_last.elvish"],
|
|
clap_complete::shells::Elvish,
|
|
cmd,
|
|
name,
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn register_completion() {
|
|
common::register_example::<completest_pty::ElvishRuntimeBuilder>("static", "exhaustive");
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn complete() {
|
|
if !common::has_command("elvish") {
|
|
return;
|
|
}
|
|
|
|
let term = completest::Term::new();
|
|
let mut runtime =
|
|
common::load_runtime::<completest_pty::ElvishRuntimeBuilder>("static", "exhaustive");
|
|
|
|
let input = "exhaustive \t";
|
|
let expected = snapbox::str![[r#"
|
|
% exhaustive --generate
|
|
COMPLETING argument
|
|
--generate generate
|
|
--global everywhere
|
|
--help Print help
|
|
--version Print version
|
|
-V Print version
|
|
-h Print help
|
|
action action
|
|
alias alias
|
|
complete Register shell completions for this program
|
|
help Print this message or the help of the given subcommand(s)
|
|
hint hint
|
|
last last
|
|
pacman pacman
|
|
quote quote
|
|
value value
|
|
"#]];
|
|
let actual = runtime.complete(input, &term).unwrap();
|
|
assert_data_eq!(actual, expected);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(all(unix, feature = "unstable-dynamic"))]
|
|
fn register_dynamic_env() {
|
|
common::register_example::<completest_pty::ElvishRuntimeBuilder>("dynamic-env", "exhaustive");
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(all(unix, feature = "unstable-dynamic"))]
|
|
fn complete_dynamic_env() {
|
|
if !common::has_command("elvish") {
|
|
return;
|
|
}
|
|
|
|
let term = completest::Term::new();
|
|
let mut runtime =
|
|
common::load_runtime::<completest_pty::ElvishRuntimeBuilder>("dynamic-env", "exhaustive");
|
|
|
|
let input = "exhaustive \t";
|
|
let expected = snapbox::str![[r#"
|
|
% exhaustive --generate
|
|
COMPLETING argument
|
|
--generate --help -V action help last quote
|
|
--global --version -h alias hint pacman value
|
|
"#]];
|
|
let actual = runtime.complete(input, &term).unwrap();
|
|
assert_data_eq!(actual, expected);
|
|
|
|
let input = "exhaustive quote \t";
|
|
let expected = snapbox::str![[r#"
|
|
% exhaustive quote --backslash
|
|
COMPLETING argument
|
|
--backslash --double-quotes --single-quotes cmd-backslash cmd-expansions
|
|
--backticks --expansions --version cmd-backticks cmd-single-quotes
|
|
--brackets --global -V cmd-brackets escape-help
|
|
--choice --help -h cmd-double-quotes help
|
|
"#]];
|
|
let actual = runtime.complete(input, &term).unwrap();
|
|
assert_data_eq!(actual, expected);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(all(unix, feature = "unstable-command"))]
|
|
fn register_dynamic_command() {
|
|
common::register_example::<completest_pty::ElvishRuntimeBuilder>(
|
|
"dynamic-command",
|
|
"exhaustive",
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(all(unix, feature = "unstable-command"))]
|
|
fn complete_dynamic_command() {
|
|
if !common::has_command("elvish") {
|
|
return;
|
|
}
|
|
|
|
let term = completest::Term::new();
|
|
let mut runtime = common::load_runtime::<completest_pty::ElvishRuntimeBuilder>(
|
|
"dynamic-command",
|
|
"exhaustive",
|
|
);
|
|
|
|
let input = "exhaustive \t";
|
|
let expected = snapbox::str![[r#"
|
|
% exhaustive --generate
|
|
COMPLETING argument
|
|
--generate --help -V action help last quote
|
|
--global --version -h alias hint pacman value
|
|
"#]];
|
|
let actual = runtime.complete(input, &term).unwrap();
|
|
assert_data_eq!(actual, expected);
|
|
|
|
let input = "exhaustive quote \t";
|
|
let expected = snapbox::str![[r#"
|
|
% exhaustive quote --backslash
|
|
COMPLETING argument
|
|
--backslash --double-quotes --single-quotes cmd-backslash cmd-expansions
|
|
--backticks --expansions --version cmd-backticks cmd-single-quotes
|
|
--brackets --global -V cmd-brackets escape-help
|
|
--choice --help -h cmd-double-quotes help
|
|
"#]];
|
|
let actual = runtime.complete(input, &term).unwrap();
|
|
assert_data_eq!(actual, expected);
|
|
}
|