From: Britton Leo Kerin <britton.kerin@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Patrick Steinhardt <ps@pks.im>,
Britton Leo Kerin <britton.kerin@gmail.com>
Subject: [PATCH v5 0/7] completion: improvements for git-bisect
Date: Mon, 5 Feb 2024 17:09:23 -0900 [thread overview]
Message-ID: <20240206020930.312164-1-britton.kerin@gmail.com> (raw)
In-Reply-To: <20240128223447.342493-1-britton.kerin@gmail.com>
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
next prev parent reply other threads:[~2024-02-06 2:09 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-02 19:57 [RFC PATCH 0/6] completion: improvements for git-bisect Britton Leo Kerin
2024-01-10 2:03 ` [PATCH v2 0/5] " Britton Leo Kerin
2024-01-18 20:43 ` [PATCH v3 " Britton Leo Kerin
2024-01-18 20:43 ` [PATCH v3 1/5] completion: complete new old actions, start opts Britton Leo Kerin
2024-01-19 7:04 ` Patrick Steinhardt
2024-01-18 20:43 ` [PATCH v3 2/5] completion: git-log opts to bisect visualize Britton Leo Kerin
2024-01-19 7:04 ` Patrick Steinhardt
2024-01-18 20:43 ` [PATCH v3 3/5] completion: move to maintain define-before-use Britton Leo Kerin
2024-01-19 7:04 ` Patrick Steinhardt
2024-01-18 20:43 ` [PATCH v3 4/5] completion: custom git-bisect terms Britton Leo Kerin
2024-01-19 7:04 ` Patrick Steinhardt
2024-01-18 20:43 ` [PATCH v3 5/5] completion: git-bisect view recognized but not completed Britton Leo Kerin
2024-01-19 7:05 ` Patrick Steinhardt
2024-01-19 7:05 ` [PATCH v3 0/5] completion: improvements for git-bisect Patrick Steinhardt
2024-01-19 18:27 ` Junio C Hamano
2024-01-26 0:23 ` Britton Kerin
2024-01-28 22:34 ` [PATCH v4 0/8] " Britton Leo Kerin
2024-01-28 22:34 ` [PATCH v4 1/8] completion: bisect: complete bad, new, old, and help subcommands Britton Leo Kerin
2024-02-01 9:55 ` Patrick Steinhardt
2024-01-28 22:34 ` [PATCH v4 2/8] completion: bisect: complete custom terms and related options Britton Leo Kerin
2024-02-01 9:55 ` Patrick Steinhardt
2024-01-28 22:34 ` [PATCH v4 3/8] completion: bisect: complete missing --first-parent and --no-checkout options Britton Leo Kerin
2024-01-28 22:34 ` [PATCH v4 4/8] completion: new function __git_complete_log_opts Britton Leo Kerin
2024-01-28 22:34 ` [PATCH v4 5/8] completion: log: use __git_complete_log_opts Britton Leo Kerin
2024-02-01 9:55 ` Patrick Steinhardt
2024-01-28 22:34 ` [PATCH v4 6/8] completion: bisect: complete log opts for visualize subcommand Britton Leo Kerin
2024-01-28 22:34 ` [PATCH v4 7/8] completion: bisect: recognize but do not complete view subcommand Britton Leo Kerin
2024-01-28 22:34 ` [PATCH v4 8/8] completion: add tests for git-bisect Britton Leo Kerin
2024-01-30 5:47 ` Junio C Hamano
2024-02-01 9:55 ` Patrick Steinhardt
2024-02-01 9:55 ` [PATCH v4 0/8] completion: improvements " Patrick Steinhardt
2024-02-06 2:09 ` Britton Leo Kerin [this message]
2024-02-06 2:09 ` [PATCH v5 1/7] completion: tests: always use 'master' for default initial branch name Britton Leo Kerin
2024-02-06 2:09 ` [PATCH v5 2/7] completion: bisect: complete bad, new, old, and help subcommands Britton Leo Kerin
2024-02-06 7:40 ` Patrick Steinhardt
2024-02-06 2:09 ` [PATCH v5 3/7] completion: bisect: complete custom terms and related options Britton Leo Kerin
2024-02-06 7:40 ` Patrick Steinhardt
2024-02-06 2:09 ` [PATCH v5 4/7] completion: bisect: complete missing --first-parent and --no-checkout options Britton Leo Kerin
2024-02-06 2:09 ` [PATCH v5 5/7] completion: new function __git_complete_log_opts Britton Leo Kerin
2024-02-06 7:40 ` Patrick Steinhardt
2024-02-06 2:09 ` [PATCH v5 6/7] completion: bisect: complete log opts for visualize subcommand Britton Leo Kerin
2024-02-06 2:09 ` [PATCH v5 7/7] completion: bisect: recognize but do not complete view subcommand Britton Leo Kerin
2024-02-06 7:40 ` [PATCH v5 0/7] completion: improvements for git-bisect Patrick Steinhardt
2024-02-06 21:50 ` [PATCH v6 " Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 1/7] completion: tests: always use 'master' for default initial branch name Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 2/7] completion: bisect: complete bad, new, old, and help subcommands Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 3/7] completion: bisect: complete custom terms and related options Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 4/7] completion: bisect: complete missing --first-parent and --no-checkout options Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 5/7] completion: new function __git_complete_log_opts Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 6/7] completion: bisect: complete log opts for visualize subcommand Britton Leo Kerin
2024-02-06 21:50 ` [PATCH v6 7/7] completion: bisect: recognize but do not complete view subcommand Britton Leo Kerin
2024-02-06 22:58 ` [PATCH v6 0/7] completion: improvements for git-bisect Junio C Hamano
2024-02-07 5:26 ` Patrick Steinhardt
[not found] ` <20240110020347.673155-1-britton.kerin@gmail.com>
2024-01-10 2:03 ` [PATCH v2 1/5] completion: complete new old actions, start opts Britton Leo Kerin
2024-01-10 2:03 ` [PATCH v2 2/5] completion: git-log opts to bisect visualize Britton Leo Kerin
2024-01-10 2:03 ` [PATCH v2 3/5] completion: move to maintain define-before-use Britton Leo Kerin
2024-01-10 2:03 ` [PATCH v2 4/5] completion: custom git-bisect terms Britton Leo Kerin
2024-01-10 2:03 ` [PATCH v2 5/5] " Britton Leo Kerin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240206020930.312164-1-britton.kerin@gmail.com \
--to=britton.kerin@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).