Relative to v4 this make the following actual changes:
* fixes GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME to 'master' for all of
t9902-completion.sh as suggested by Junio. This change affects all
of t9902-completion.sh so I've put it by itself in it's own commit. * uses BISECT_TERMS to avoid pointless processes as suggested by Patrick.
The commits are also refactored as follows:
* squashes the introduction of __git_complete_log_opts in with it's
first use a suggested by Patrick. * spreads tests across commits as suggest by Patrick.
Thanks for the reviews.
Britton Leo Kerin (7):
completion: tests: always use 'master' for default initial branch name
completion: bisect: complete bad, new, old, and help subcommands
completion: bisect: complete custom terms and related options
completion: bisect: complete missing --first-parent and --no-checkout
options
completion: new function __git_complete_log_opts
completion: bisect: complete log opts for visualize subcommand
completion: bisect: recognize but do not complete view subcommand contrib/completion/git-completion.bash | 65 ++++++++++--
t/t9902-completion.sh | 140 +++++++++++++++++++++++++
2 files changed, 198 insertions(+), 7 deletions(-)
Range-diff against v4:
1: 66153024c3 < -: ---------- completion: bisect: complete bad, new, old, and help subcommands
-: ---------- > 1: 71b73de914 completion: tests: always use 'master' for default initial branch name
8: 451b7a4467 ! 2: 3a478a7a08 completion: add tests for git-bisect
@@ Metadata
Author: Britton Leo Kerin <britton.kerin@gmail.com> ## Commit message ##
- completion: add tests for git-bisect
+ completion: bisect: complete bad, new, old, and help subcommands - There aren't any tests for completion of git bisect and it's
- subcommands.
+ The bad, new, old and help subcommands to git-bisect(1) are not
+ completed. + Add the bad, new, old, and help subcommands to the appropriate lists
+ such that the commands and their possible ref arguments are completed.
Add tests. + Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.c
+
+ ## contrib/completion/git-completion.bash ##
+@@ contrib/completion/git-completion.bash: _git_bisect ()
+ {
+ __git_has_doubledash && return
+
+- local subcommands="start bad good skip reset visualize replay log run"
++ local subcommands="start bad new good old skip reset visualize replay log run help"
+ local subcommand="$(__git_find_on_cmdline "$subcommands")"
+ if [ -z "$subcommand" ]; then
+ __git_find_repo_path
+@@ contrib/completion/git-completion.bash: _git_bisect ()
+ fi
+
+ case "$subcommand" in
+- bad|good|reset|skip|start)
++ bad|new|good|old|reset|skip|start)
+ __git_complete_refs
+ ;;
+ *)
+
## t/t9902-completion.sh ##
@@ t/t9902-completion.sh: test_expect_success 'git switch - with no options, complete local branches and u
EOF
@@ t/t9902-completion.sh: test_expect_success 'git switch - with no options, comple
+ EOF
+'
+
-+test_expect_success 'git bisect - complete options to start subcommand' '
-+ test_completion "git bisect start --" <<-\EOF
-+ --term-new Z
-+ --term-bad Z
-+ --term-old Z
-+ --term-good Z
-+ --no-checkout Z
-+ --first-parent Z
-+ EOF
-+'
-+
+test_expect_success 'setup for git-bisect tests requiring a repo' '
+ git init git-bisect &&
+ (
@@ t/t9902-completion.sh: test_expect_success 'git switch - with no options, comple
+ test_completion "git bisect " <<-\EOF
+ start Z
+ bad Z
-+ custom_new Z
-+ custom_old Z
+ new Z
+ good Z
+ old Z
-+ terms Z
+ skip Z
+ reset Z
+ visualize Z
@@ t/t9902-completion.sh: test_expect_success 'git switch - with no options, comple
+ EOF
+ )
+'
-+test_expect_success 'git-bisect - options to terms subcommand are candidates' '
-+ (
-+ cd git-bisect &&
-+ test_completion "git bisect terms --" <<-\EOF
-+ --term-bad Z
-+ --term-good Z
-+ --term-new Z
-+ --term-old Z
-+ EOF
-+ )
-+'
-+
-+test_expect_success 'git-bisect - git-log options to visualize subcommand are candidates' '
-+ (
-+ cd git-bisect &&
-+ # The completion used for git-log and here does not complete
-+ # every git-log option, so rather than hope to stay in sync
-+ # with exactly what it does we will just spot-test here.
-+ test_completion "git bisect visualize --sta" <<-\EOF &&
-+ --stat Z
-+ EOF
-+ test_completion "git bisect visualize --summar" <<-\EOF
-+ --summary Z
-+ EOF
-+ )
-+'
-+
-+test_expect_success 'git-bisect - view subcommand is not a candidate' '
-+ (
-+ cd git-bisect &&
-+ test_completion "git bisect vi" <<-\EOF
-+ visualize Z
-+ EOF
-+ )
-+'
-+
-+test_expect_success 'git-bisect - existing view subcommand is recognized and enables completion of git-log options' '
-+ (
-+ cd git-bisect &&
-+ # The completion used for git-log and here does not complete
-+ # every git-log option, so rather than hope to stay in sync
-+ # with exactly what it does we will just spot-test here.
-+ test_completion "git bisect view --sta" <<-\EOF &&
-+ --stat Z
-+ EOF
-+ test_completion "git bisect view --summar" <<-\EOF
-+ --summary Z
-+ EOF
-+ )
-+'
+
test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
test_completion "git checkout " <<-\EOF
2: 7eb8c842a3 ! 3: fab7159cf4 completion: bisect: complete custom terms and related options
@@ Commit message
these options or the new subcommands they define. Add support for these options and the custom subcommands by checking for
- them if a bisection is in progress and adding them to the list of
- subcommands.
+ BISECT_TERMS and adding them to the list of subcommands. Add tests. Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com>
@@ contrib/completion/git-completion.bash: _git_bisect ()
+
+ # If a bisection is in progress get the terms being used.
+ local term_bad term_good
-+ if [ -f "$__git_repo_path"/BISECT_START ]; then
++ if [ -f "$__git_repo_path"/BISECT_TERMS ]; then
+ term_bad=$(__git bisect terms --term-bad)
+ term_good=$(__git bisect terms --term-good)
+ fi
@@ contrib/completion/git-completion.bash: _git_bisect ()
__git_complete_refs
;;
*)
+
+ ## t/t9902-completion.sh ##
+@@ t/t9902-completion.sh: test_expect_success 'git-bisect - when bisecting all subcommands are candidates'
+ test_completion "git bisect " <<-\EOF
+ start Z
+ bad Z
++ custom_new Z
++ custom_old Z
+ new Z
+ good Z
+ old Z
++ terms Z
+ skip Z
+ reset Z
+ visualize Z
+@@ t/t9902-completion.sh: test_expect_success 'git-bisect - when bisecting all subcommands are candidates'
+ EOF
+ )
+ '
++test_expect_success 'git-bisect - options to terms subcommand are candidates' '
++ (
++ cd git-bisect &&
++ test_completion "git bisect terms --" <<-\EOF
++ --term-bad Z
++ --term-good Z
++ --term-new Z
++ --term-old Z
++ EOF
++ )
++'
++
+
+ test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
+ test_completion "git checkout " <<-\EOF
3: 5f5076bb93 < -: ---------- completion: bisect: complete missing --first-parent and --no-checkout options
4: c8ffa0e915 < -: ---------- completion: new function __git_complete_log_opts
5: 733613d1ed < -: ---------- completion: log: use __git_complete_log_opts
-: ---------- > 4: 73f3343b94 completion: bisect: complete missing --first-parent and --no-checkout options
-: ---------- > 5: a20846bbd3 completion: new function __git_complete_log_opts
6: 06f5973b3b ! 6: fe5545c9a3 completion: bisect: complete log opts for visualize subcommand
@@ Commit message
Make completion of porcelain git-log options and option arguments to the
visualize subcommand work by calling __git_complete_log_opts when the
start of an option to the subcommand is seen (visualize doesn't support
- any options besides the git-log options).
+ any options besides the git-log options). Add test. Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com>
@@ contrib/completion/git-completion.bash: _git_bisect ()
bad|new|"$term_bad"|good|old|"$term_good"|reset|skip)
__git_complete_refs
;;
+
+ ## t/t9902-completion.sh ##
+@@ t/t9902-completion.sh: test_expect_success 'git-bisect - options to terms subcommand are candidates' '
+ )
+ '
+
++test_expect_success 'git-bisect - git-log options to visualize subcommand are candidates' '
++ (
++ cd git-bisect &&
++ # The completion used for git-log and here does not complete
++ # every git-log option, so rather than hope to stay in sync
++ # with exactly what it does we will just spot-test here.
++ test_completion "git bisect visualize --sta" <<-\EOF &&
++ --stat Z
++ EOF
++ test_completion "git bisect visualize --summar" <<-\EOF
++ --summary Z
++ EOF
++ )
++'
+
+ test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
+ test_completion "git checkout " <<-\EOF
7: 1dc9323f24 ! 7: c9102ac532 completion: bisect: recognize but do not complete view subcommand
@@ Commit message
completion for it. Recognize but do not complete the view command by creating and using
- separate lists of completable_subcommands and all_subcommands.
+ separate lists of completable_subcommands and all_subcommands. Add
+ tests. Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com>
@@ contrib/completion/git-completion.bash: _git_bisect ()
__git_complete_log_opts
return
;;
+
+ ## t/t9902-completion.sh ##
+@@ t/t9902-completion.sh: test_expect_success 'git-bisect - git-log options to visualize subcommand are ca
+ )
+ '
+
++test_expect_success 'git-bisect - view subcommand is not a candidate' '
++ (
++ cd git-bisect &&
++ test_completion "git bisect vi" <<-\EOF
++ visualize Z
++ EOF
++ )
++'
++
++test_expect_success 'git-bisect - existing view subcommand is recognized and enables completion of git-log options' '
++ (
++ cd git-bisect &&
++ # The completion used for git-log and here does not complete
++ # every git-log option, so rather than hope to stay in sync
++ # with exactly what it does we will just spot-test here.
++ test_completion "git bisect view --sta" <<-\EOF &&
++ --stat Z
++ EOF
++ test_completion "git bisect view --summar" <<-\EOF
++ --summary Z
++ EOF
++ )
++'
++
+ test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
+ test_completion "git checkout " <<-\EOF
+ HEAD Z
--
2.43.0