[PATCH v5 09/10] parseopt: add tests for subcommand autocorrection
- From
- Jiamu Sun <39@barroit.sh>
- Date
- Apr 22, 2026, 12:18 UTC
- Message-ID
- <SY0P300MB08018E1D69CECC5CD4098BABCE2D2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
- In-Reply-To
- <SY0P300MB0801AE56F740AD087D22B35ACE2D2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
These tests cover default behavior (help.autocorrect is unset), no correction, immediate correction, delayed correction, and rejection when the typo is too dissimilar.
Signed-off-by: Jiamu Sun <39@barroit.sh> --- t/meson.build | 1 + t/t9004-autocorrect-subcommand.sh | 58 +++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100755 t/t9004-autocorrect-subcommand.sh
diff --git a/t/meson.build b/t/meson.build index 7528e5cda5fe..871cd7ab0a08 100644 --- a/t/meson.build +++ b/t/meson.build @@ -980,6 +980,7 @@ integration_tests = [ 't9001-send-email.sh', 't9002-column.sh', 't9003-help-autocorrect.sh', + 't9004-autocorrect-subcommand.sh', 't9100-git-svn-basic.sh', 't9101-git-svn-props.sh', 't9102-git-svn-deep-rmdir.sh', diff --git a/t/t9004-autocorrect-subcommand.sh b/t/t9004-autocorrect-subcommand.sh new file mode 100755 index 000000000000..09d281bd105b --- /dev/null +++ b/t/t9004-autocorrect-subcommand.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +test_description='subcommand auto-correction test + +Test autocorrection for subcommands with different +help.autocorrect mode.' + +. ./test-lib.sh + +test_expect_success 'setup' " + echo '^error: unknown subcommand: ' >grep_unknown +" + +test_expect_success 'default is show hint only' ' + test_must_fail git worktree lsit 2>actual && + test_grep "most similar subcommand" actual +' + +test_expect_success "'never' disables autocorrection" ' + test_config help.autocorrect never && + + test_must_fail git worktree lsit 2>actual && + head -n1 actual >first && test_grep -f grep_unknown first +' + +for mode in false no off 0 show +do + test_expect_success "'$mode' disables autocorrection and shows hints" " + test_config help.autocorrect $mode && + + test_must_fail git worktree lsit 2>actual && + test_grep 'most similar subcommand' actual + " +done + +for mode in -39 immediate 1 +do + test_expect_success "autocorrect immediately with '$mode'" - <<-EOT + test_config help.autocorrect $mode && + + git worktree lsit 2>actual && + test_grep "you meant 'list'\.$" actual + EOT +done + +test_expect_success 'delay path is executed' - <<-\EOT + test_config help.autocorrect 2 && + + git worktree lsit 2>actual && + test_grep '^Continuing in 0.2 seconds, ' actual +EOT + +test_expect_success 'deny if too dissimilar' - <<-\EOT + test_must_fail git remote rensnr 2>actual && + head -n1 actual >first && test_grep -f grep_unknown first +EOT + +test_done
-- 2.53.0