Re: [PATCH v2] tests: add initial bash completion tests
From: SZEDER Gábor <hidden>
Date: 2016-06-15 22:53:34
On Fri, Apr 13, 2012 at 11:12:36AM +0200, SZEDER Gábor wrote:
On Thu, Apr 12, 2012 at 12:57:03AM +0300, Felipe Contreras wrote:quoted
+. "$GIT_BUILD_DIR/contrib/completion/git-completion.bash" + +_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?
Ah, ok, I think I got it. Of course, the words on the command line must be specified somehow to test completion functions. But the two implementations of _get_comp_words_by_ref() for bash and zsh in the completion script take the words on the command line from different variables, so we need a common implementation to test completion functions both on bash and zsh. Hence the _get_comp_words_by_ref() above, which takes the words on the command line and their count from $_words and $_cword, respectively, and run_completion() below, which fills those variables with its arguments.
quoted
+print_comp () +{ + local IFS=$'\n' + echo "${COMPREPLY[*]}" > out +} + +run_completion () +{ + local -a COMPREPLY _words + local _cword + _words=( $1 ) + (( _cword = ${#_words[@]} - 1 )) + _git && print_comp +}