Re: [PATCH v2] tests: add initial bash completion tests
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Apr 13, 2012, 10:48 UTC
- Message-ID
- <CAMP44s3g8acV4fjaSvnUo_jnhj40-TWR0az6zOwRNfv9_Qa23g@mail.gmail.com>
- In-Reply-To
- <20120413094500.GD2164@goldbirke>
2012/4/13 SZEDER Gábor <szeder@ira.uka.de>:
Show 39 quoted lines
> 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:
>> > +. "$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.Well, yeah, that's one reason, but also I don't see the point in trying to fill the internal bash completion variables, maybe there would be some conflicts? Plus, the bash version of _get_comp_words_by_ref is rather complicated, so I decided to start with something simple that I could understand and see exactly what's going on. And for zsh I would definitely prefer to override _get_comp_words_by_ref than to mess with the internal variables, although I haven't found a way to test completion for zsh.
Cheers.
-- Felipe Contreras