mirror of
https://github.com/clap-rs/clap
synced 2024-11-10 06:44:16 +00:00
test: (completion) enum value help
- Breaking for fish shell - Matching the bad output to make the test pass
This commit is contained in:
parent
dc63cba772
commit
ca06c321c5
6 changed files with 30 additions and 6 deletions
|
@ -1,3 +1,4 @@
|
|||
use clap::builder::PossibleValue;
|
||||
#[cfg(feature = "unstable-dynamic")]
|
||||
use clap::{FromArgMatches, Subcommand};
|
||||
use clap_complete::{generate, Generator, Shell};
|
||||
|
@ -88,6 +89,14 @@ fn cli() -> clap::Command {
|
|||
.long("expansions")
|
||||
.action(clap::ArgAction::SetTrue)
|
||||
.help("Execute the shell command with $SHELL"),
|
||||
clap::Arg::new("choice")
|
||||
.long("choice")
|
||||
.action(clap::ArgAction::Set)
|
||||
.value_parser(clap::builder::PossibleValuesParser::new([
|
||||
PossibleValue::new("bash").help("bash (shell)"),
|
||||
PossibleValue::new("fish").help("fish shell"),
|
||||
PossibleValue::new("zsh").help("zsh shell"),
|
||||
])),
|
||||
])
|
||||
.subcommands([
|
||||
clap::Command::new("cmd-single-quotes")
|
||||
|
|
|
@ -732,12 +732,16 @@ _exhaustive() {
|
|||
return 0
|
||||
;;
|
||||
exhaustive__quote)
|
||||
opts="-h -V --single-quotes --double-quotes --backticks --backslash --brackets --expansions --global --help --version cmd-single-quotes cmd-double-quotes cmd-backticks cmd-backslash cmd-brackets cmd-expansions escape-help help"
|
||||
opts="-h -V --single-quotes --double-quotes --backticks --backslash --brackets --expansions --choice --global --help --version cmd-single-quotes cmd-double-quotes cmd-backticks cmd-backslash cmd-brackets cmd-expansions escape-help help"
|
||||
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||
return 0
|
||||
fi
|
||||
case "${prev}" in
|
||||
--choice)
|
||||
COMPREPLY=($(compgen -W "bash fish zsh" -- "${cur}"))
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=()
|
||||
;;
|
||||
|
|
|
@ -48,6 +48,7 @@ set edit:completion:arg-completer[exhaustive] = {|@words|
|
|||
cand --version 'Print version'
|
||||
}
|
||||
&'exhaustive;quote'= {
|
||||
cand --choice 'choice'
|
||||
cand --single-quotes 'Can be ''always'', ''auto'', or ''never'''
|
||||
cand --double-quotes 'Can be "always", "auto", or "never"'
|
||||
cand --backticks 'For more information see `echo test`'
|
||||
|
@ -55,8 +56,8 @@ set edit:completion:arg-completer[exhaustive] = {|@words|
|
|||
cand --brackets 'List packages [filter]'
|
||||
cand --expansions 'Execute the shell command with $SHELL'
|
||||
cand --global 'everywhere'
|
||||
cand -h 'Print help'
|
||||
cand --help 'Print help'
|
||||
cand -h 'Print help (see more with ''--help'')'
|
||||
cand --help 'Print help (see more with ''--help'')'
|
||||
cand -V 'Print version'
|
||||
cand --version 'Print version'
|
||||
cand cmd-single-quotes 'Can be ''always'', ''auto'', or ''never'''
|
||||
|
|
|
@ -18,6 +18,7 @@ complete -c exhaustive -n "__fish_seen_subcommand_from action" -l count -d 'numb
|
|||
complete -c exhaustive -n "__fish_seen_subcommand_from action" -l global -d 'everywhere'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from action" -s h -l help -d 'Print help'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from action" -s V -l version -d 'Print version'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l choice -r -f -a "{bash bash (shell),fish fish shell,zsh zsh shell}"
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l single-quotes -d 'Can be \'always\', \'auto\', or \'never\''
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l double-quotes -d 'Can be "always", "auto", or "never"'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l backticks -d 'For more information see `echo test`'
|
||||
|
@ -25,7 +26,7 @@ complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_see
|
|||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l brackets -d 'List packages [filter]'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l expansions -d 'Execute the shell command with $SHELL'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -l global -d 'everywhere'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -s V -l version -d 'Print version'
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -f -a "cmd-single-quotes" -d 'Can be \'always\', \'auto\', or \'never\''
|
||||
complete -c exhaustive -n "__fish_seen_subcommand_from quote; and not __fish_seen_subcommand_from cmd-single-quotes; and not __fish_seen_subcommand_from cmd-double-quotes; and not __fish_seen_subcommand_from cmd-backticks; and not __fish_seen_subcommand_from cmd-backslash; and not __fish_seen_subcommand_from cmd-brackets; and not __fish_seen_subcommand_from cmd-expansions; and not __fish_seen_subcommand_from escape-help; and not __fish_seen_subcommand_from help" -f -a "cmd-double-quotes" -d 'Can be "always", "auto", or "never"'
|
||||
|
|
|
@ -45,6 +45,9 @@ _arguments "${_arguments_options[@]}" \
|
|||
;;
|
||||
(quote)
|
||||
_arguments "${_arguments_options[@]}" \
|
||||
'--choice=[]: :((bash\:"bash (shell)"
|
||||
fish\:"fish shell"
|
||||
zsh\:"zsh shell"))' \
|
||||
'--single-quotes[Can be '\''always'\'', '\''auto'\'', or '\''never'\'']' \
|
||||
'--double-quotes[Can be "always", "auto", or "never"]' \
|
||||
'--backticks[For more information see \`echo test\`]' \
|
||||
|
@ -52,8 +55,8 @@ _arguments "${_arguments_options[@]}" \
|
|||
'--brackets[List packages \[filter\]]' \
|
||||
'--expansions[Execute the shell command with \$SHELL]' \
|
||||
'--global[everywhere]' \
|
||||
'-h[Print help]' \
|
||||
'--help[Print help]' \
|
||||
'-h[Print help (see more with '\''--help'\'')]' \
|
||||
'--help[Print help (see more with '\''--help'\'')]' \
|
||||
'-V[Print version]' \
|
||||
'--version[Print version]' \
|
||||
":: :_exhaustive__quote_commands" \
|
||||
|
|
|
@ -142,6 +142,12 @@ action complete (Register shell completions for this program) hint
|
|||
alias help (Print this message or the help of the given subcommand(s)) last quote"#;
|
||||
let actual = runtime.complete(input, &term).unwrap();
|
||||
snapbox::assert_eq(expected, actual);
|
||||
|
||||
let input = "exhaustive quote --choice \t";
|
||||
let actual = runtime.complete(input, &term).unwrap();
|
||||
let expected_substring = r#"% exhaustive quote --choice
|
||||
Command 'shell' not found, did you mean:"#;
|
||||
assert!(actual.as_str().contains(expected_substring));
|
||||
}
|
||||
|
||||
#[cfg(all(unix, feature = "unstable-dynamic"))]
|
||||
|
|
Loading…
Reference in a new issue