[PATCH 4/5] completion: test __gitcomp() and __gitcomp_nl() with expandable words
- From
SZEDER Gábor <szeder@ira.uka.de>
- Date
- Sep 28, 2012, 10:09 UTC
- Message-ID
- <1348826975-2225-4-git-send-email-szeder@ira.uka.de>
- In-Reply-To
- <1348826975-2225-1-git-send-email-szeder@ira.uka.de>
compgen performs expansion on all words in the list given to its -W option. This breaks completion in various ways if one of those words can be expanded. The funniest breakage is probably this, as the command_not_found_handle kicks in:
$ git branch '$(foo)' $ git branch <TAB>No command 'foo' found, did you mean: Command 'fio' from package 'fio' (universe) Command 'goo' from package 'goo' (universe) Command 'fop' from package 'fop' (main) Command 'fox' from package 'objcryst-fox' (universe) Command 'xoo' from package 'xoo' (universe) Command 'zoo' from package 'zoo' (universe) foo: command not found
Document this breakage with tests.
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> --- t/t9902-completion.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)
diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 01f33220..4af2a149 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -146,6 +146,22 @@ test_expect_success '__gitcomp - suffix' ' test_cmp expected out ' +test_expect_failure '__gitcomp - expandable words' ' + sed -e "s/Z$//" >expected <<-\EOF && + $foo Z + $(bar) Z + ${baz} Z + EOF + ( + local -a COMPREPLY && + cur="" && + __gitcomp "\$foo \$(bar) \${baz}" && + IFS="$newline" && + echo "${COMPREPLY[*]}" > out + ) && + test_cmp expected out +' + test_expect_success '__gitcomp_nl - trailing space' ' sed -e "s/Z$//" >expected <<-\EOF && maint Z @@ -193,6 +209,22 @@ test_expect_success '__gitcomp_nl - suffix' ' test_cmp expected out ' +test_expect_failure '__gitcomp_nl - expandable words' ' + sed -e "s/Z$//" >expected <<-\EOF && + $foo Z + $(bar) Z + ${baz} Z + EOF + ( + local -a COMPREPLY && + cur="" && + __gitcomp_nl "\$foo$newline\$(bar)$newline\${baz}" && + IFS="$newline" && + echo "${COMPREPLY[*]}" > out + ) && + test_cmp expected out +' + test_expect_success 'basic' ' run_completion git "" && # built-in
-- 1.7.12.1.438.g7dfa67b