On Wed, Jan 15, 2025 at 01:56:31PM -0800, Junio C Hamano wrote: > Here is what I have as v2; there will be patches that touch > builtin/*.c in between and I expect that the last patch to conclude > the series will end with an update to parse-options.c (to exit with > 0 when asked to give a help) and t0012 (to stop expecting 129). > > --- >8 --- > Subject: [PATCH v2] parse-options: add show_usage_help_and_exit_if_asked() Thanks, this looks fine. The name is clunky but probably OK. ;) I don't know if we'd want something like this on top. If somebody is interested in just doing all the conversions in the near-term, we could do without the optional flag. -- >8 -- Subject: [PATCH] t0012: optionally check that "-h" output goes to stdout For most commands, "git foo -h" will send the help output to stdout, as this is what parse-options.c does. But some commands send it to stderr instead. This is usually because they call usage_with_options(), and should be switched to show_usage_help_and_exit_if_asked(). Currently t0012 is permissive and allows either behavior. We'd like it to eventually enforce that help goes to stdout, and teaching it to do so identifies the commands that need to be changed. But during the transition period, we don't want to enforce that for most test runs. So let's introduce a flag that will let most test runs use the permissive behavior, and people interested in converting commands can run: GIT_TEST_HELP_MUST_BE_STDOUT=1 ./t0012-help.sh to see the failures. Eventually (when all builtins have been converted) we'll remove this flag entirely and always check the strict behavior. Signed-off-by: Jeff King <peff@xxxxxxxx> --- t/t0012-help.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/t/t0012-help.sh b/t/t0012-help.sh index 1d273d91c2..9c7ae9fd36 100755 --- a/t/t0012-help.sh +++ b/t/t0012-help.sh @@ -255,9 +255,16 @@ do ( GIT_CEILING_DIRECTORIES=$(pwd) && export GIT_CEILING_DIRECTORIES && - test_expect_code 129 git -C sub $builtin -h >output 2>&1 + test_expect_code 129 git -C sub $builtin -h >output 2>err ) && - test_grep usage output + if test -n "$GIT_TEST_HELP_MUST_BE_STDOUT" + then + test_must_be_empty err && + test_grep usage output + else + test_grep usage output || + test_grep usage err + fi ' done <builtins -- 2.48.1.434.g4084d8f956