Re: [PATCH v2] tests: add initial bash completion tests
2012/4/13 Junio C Hamano <gitster@pobox.com>:
Show 44 quoted lines
> SZEDER Gábor <szeder@ira.uka.de> writes:
>
>>> +_get_comp_words_by_ref ()
>>> +{
>>> + while [ $# -gt 0 ]; do
>>> + case "$1" in
>>> + cur)
>>> + cur=${_words[_cword]}
>>> + ;;
>>> + prev)
>>> + prev=${_words[_cword-1]}
>>> + ;;
>>> + words)
>>> + words=("${_words[@]}")
>>> + ;;
>>> + cword)
>>> + cword=$_cword
>>> + ;;
>>> + esac
>>> + shift
>>> + done
>>> +}
>>
>> Git's completion script already implements this function. Why
>> override it here?
>
> It is not "already implements" that I am worried about, but it implements
> it differently without explaining why, which is worrying. I agree it
> needs to be explained before the function.
>>> + # plumbing
>>> + ! grep -q "^ls-files \$" out
>>
>> The && is missing here at the end of the line.
>
> True.
>
>>> + run_completion "git f" &&
>>> + ! grep -q -v "^f" out
>>
>> grep is not a git command, so I'm not sure, but shouldn't these use
>> 'test_must_fail grep' instead of '! grep'?
>
> "! grep" is fine. We are not trying to catch the case where we break the
> implementation of "grep" to cause it to segfault.--- a/t/t9902-completion.sh
+++ b/t/t9902-completion.sh
@@ -27,6 +27,9 @@ complete ()
. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash"
+# We don't need this function to actually join words or do anything special.
+# Also, it's more clean to avoid touching bash's internal completion variables.
+# So let's override it with a minimal version for testing purposes.
_get_comp_words_by_ref ()
{
while [ $# -gt 0 ]; do
@@ -77,7 +80,7 @@ test_expect_success 'basic' '
# script
grep -q "^filter-branch \$" out &&
# plumbing
- ! grep -q "^ls-files \$" out
+ ! grep -q "^ls-files \$" out &&
run_completion "git f" &&
! grep -q -v "^f" out
--
Felipe Contreras