2012/4/13 Junio C Hamano <gitster@xxxxxxxxx>: > SZEDER Gábor <szeder@xxxxxxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html