From: Felipe Contreras Date: Sat, 14 Apr 2012 02:06:17 GMT Subject: Re: [PATCH v2] tests: add initial bash completion tests Message-ID: In-Reply-To: <7v62d32z1a.fsf@alter.siamese.dyndns.org> 2012/4/13 Junio C Hamano : > SZEDER Gábor 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