completion: bisect: complete bad, new, old, and help 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.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Britton Leo Kerin 2024-02-06 12:50:43 -09:00 committed by Junio C Hamano
parent db489ea4f3
commit e1f74dd58b
2 changed files with 73 additions and 2 deletions

View file

@ -1449,7 +1449,7 @@ _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
@ -1462,7 +1462,7 @@ _git_bisect ()
fi
case "$subcommand" in
bad|good|reset|skip|start)
bad|new|good|old|reset|skip|start)
__git_complete_refs
;;
*)

View file

@ -1264,6 +1264,77 @@ test_expect_success 'git switch - with no options, complete local branches and u
EOF
'
test_expect_success 'git bisect - when not bisecting, complete only replay and start subcommands' '
test_completion "git bisect " <<-\EOF
replay Z
start Z
EOF
'
test_expect_success 'setup for git-bisect tests requiring a repo' '
git init git-bisect &&
(
cd git-bisect &&
echo "initial contents" >file &&
git add file &&
git commit -am "Initial commit" &&
git tag initial &&
echo "new line" >>file &&
git commit -am "First change" &&
echo "another new line" >>file &&
git commit -am "Second change" &&
git tag final
)
'
test_expect_success 'git bisect - start subcommand arguments before double-dash are completed as revs' '
(
cd git-bisect &&
test_completion "git bisect start " <<-\EOF
HEAD Z
final Z
initial Z
master Z
EOF
)
'
# Note that these arguments are <pathspec>s, which in practice the fallback
# completion (not the git completion) later ends up completing as paths.
test_expect_success 'git bisect - start subcommand arguments after double-dash are not completed' '
(
cd git-bisect &&
test_completion "git bisect start final initial -- " ""
)
'
test_expect_success 'setup for git-bisect tests requiring ongoing bisection' '
(
cd git-bisect &&
git bisect start --term-new=custom_new --term-old=custom_old final initial
)
'
test_expect_success 'git-bisect - when bisecting all subcommands are candidates' '
(
cd git-bisect &&
test_completion "git bisect " <<-\EOF
start Z
bad Z
new Z
good Z
old Z
skip Z
reset Z
visualize Z
replay Z
log Z
run Z
help Z
EOF
)
'
test_expect_success 'git checkout - completes refs and unique remote branches for DWIM' '
test_completion "git checkout " <<-\EOF
HEAD Z