git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 6/7] t/t1517: move verify-commit -h test to t1517

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 11, 2025, 16:37 UTC
Message-ID
<xmqqcya63cqx.fsf@gitster.g>
In-Reply-To
<CAPSxiM_ZZrbFpgvxqYgZ8oeTbRs+HW=rM+9Dud0G_Qr7eq3=FA@mail.gmail.com>
Usman Akinyemi <usmanakinyemi202@gmail.com> writes:
Show 10 quoted lines
>> But in the longer run, we are very much likely that we'd want to
>> test something that needs things that require prerequisites (like
>> "do this only where XYZ is installed") but ought to work outside a
>> repository, which means t1517 would need to pull in things like
>> lib-gpg.sh only because it has a few tests about verify-blah
>> command.  These tend to accumulate over time.
>
> I understand the concern and I felt we should at least decide where to
> put the "verify -h" because, right now, we have some of them in the
> t1517 and also some in their respective test files.

If t1517 were only about "git subcmd -h outside a repository" for various subcommands, that would be a happy arrangement. I think we even have a way to iterate over all Git subcommands, current or future, so your patch may become "we've sprinkled 'subcmd -h' tests in various scripts, but now t1517 will do that automatically so anybody who add a new command do not have to do anything".

But if t1517 currently (before your series) already has other things tested, that changes the story somewhat. Especially if we aim for the automated solution, we may want to move existing tests in 1517 that is not about "subcmd -h" out to different scripts. Obvious two choices are:

 - We spread them to existing test scripts for the command being
   tested (e.g. "does patch-id work correctly outside a repo?"
   moves to t4204-patch-id, and "does update-server-info work OK
   inside and outside a repo?" can be split and one half moves to
   t5200-update-server-info).
 - We move them all to a new test script that is dedicated for "do
   various subcommands work outside a repo to do things other than
   responding to '-h'?".
and I would favour the former.

The only reason why you moved these to t1517 is because the set-up part of that script sets up the ceiling just once properly and let its tests do as if they are running outsie a repository, and having to arrange the ceiling correctly to add a few test in various scripts so that each of these scripts can test their single subcommand pretending that it is running outside a repository looked cumbersome, right? And I do agree with you, if that was the reason, that it is annoying to have to set up the ceiling manually in each test script. But then can we do it less annoying? We already made a nongit test helper and it may be good enough to help existing tests in t1517.

As an illustration, here is what the beginning of the former approach may look like.

 t/t1517-outside-repo.sh       | 27 +++++++++++++++++++++------
 t/t5200-update-server-info.sh |  5 +++++
 2 files changed, 26 insertions(+), 6 deletions(-)
diff --git c/t/t1517-outside-repo.sh w/t/t1517-outside-repo.sh
index 6824581317..c1294d5761 100755
--- c/t/t1517-outside-repo.sh
+++ w/t/t1517-outside-repo.sh
@@ -107,11 +107,26 @@ test_expect_success LIBCURL 'remote-http outside repository' '
 	test_grep "^error: remote-curl" actual
 '
 
-test_expect_success 'update-server-info does not crash with -h' '
-	test_expect_code 129 git update-server-info -h >usage &&
-	test_grep "[Uu]sage: git update-server-info " usage &&
-	test_expect_code 129 nongit git update-server-info -h >usage &&
-	test_grep "[Uu]sage: git update-server-info " usage
-'
+for cmd in $(git --list-cmds=main)
+do
+	cmd=${cmd%.*} # strip .sh, .perl, etc.
+	case "$cmd" in
+	archimport | cvsexportcommit | cvsimport | cvsserver | daemon | \
+	difftool--helper | filter-branch | fsck-objects | get-tar-commit-id | \
+	http-backend | http-fetch | http-push | init-db | instaweb.sh | \
+	merge-octopus | merge-one-file | merge-resolve | mergetool | \
+	mktag | p4 | p4.py | pickaxe | quiltimport | remote-ftp | remote-ftps | \
+	remote-http | remote-https | replay | request-pull | send-email | \
+	sh-i18n--envsubst | shell | show | stage | submodule | svn | \
+	upload-archive--writer | upload-pack | web--browse | whatchanged)
+		expect_outcome=expect_failure ;;
+	*)
+		expect_outcome=expect_success ;;
+	esac
+	test_$expect_outcome "'git $cmd -h' outside a repository" '
+		test_expect_code 129 nongit git $cmd -h >usage &&
+		test_grep "[Uu]sage: git $cmd " usage
+	'
+done
 
 test_done
diff --git c/t/t5200-update-server-info.sh w/t/t5200-update-server-info.sh
index 8365907055..a551e955b5 100755
--- c/t/t5200-update-server-info.sh
+++ w/t/t5200-update-server-info.sh
@@ -46,4 +46,9 @@ test_expect_success 'midx does not create duplicate pack entries' '
 	test_must_be_empty dups
 '
 
+test_expect_success 'update-server-info does not crash with -h' '
+	test_expect_code 129 git update-server-info -h >usage &&
+	test_grep "[Uu]sage: git update-server-info " usage
+'
+
 test_done
Previous: Usman AkinyemiNext: Usman Akinyemi
Message 18 of 53 in “move builtin help test to t1517”
  1. 0/7 move builtin help test to t1517Usman Akinyemi, Jul 6, 2025
  2. 1/7 t/t1517: move checkout-index -h test to t1517Usman Akinyemi, Jul 6, 2025
  3. 2/7 t/t1517: move for-each-ref -h test to t1517Usman Akinyemi, Jul 6, 2025
  4. 3/7 t/t1517: move ls-files -h test to t1517Usman Akinyemi, Jul 6, 2025
  5. 4/7 t/t1517: move pack-refs -h test to t1517Usman Akinyemi, Jul 6, 2025
  6. 5/7 t/t1517: move send-pack -h test to t1517Usman Akinyemi, Jul 6, 2025
  7. 6/7 t/t1517: move verify-commit -h test to t1517Usman Akinyemi, Jul 6, 2025
  8. 7/7 t/t1517: move verify-tag -h test to t1517Usman Akinyemi, Jul 6, 2025
  9. 0/7 move builtin help test to t1517Usman Akinyemi, Jul 6, 2025
  10. 1/7 t/t1517: move checkout-index -h test to t1517Usman Akinyemi, Jul 6, 2025
  11. 2/7 t/t1517: move for-each-ref -h test to t1517Usman Akinyemi, Jul 6, 2025
  12. 3/7 t/t1517: move ls-files -h test to t1517Usman Akinyemi, Jul 6, 2025
  13. 4/7 t/t1517: move pack-refs -h test to t1517Usman Akinyemi, Jul 6, 2025
  14. 5/7 t/t1517: move send-pack -h test to t1517Usman Akinyemi, Jul 6, 2025
  15. 6/7 t/t1517: move verify-commit -h test to t1517Usman Akinyemi, Jul 6, 2025
  16. Junio C HamanoJul 7, 2025
  17. Usman AkinyemiJul 10, 2025
  18. Junio C HamanoJul 11, 2025
  19. 0/2 refactor t1517 to focus on help output outside a repositoryUsman Akinyemi, Jul 21, 2025
  20. 1/2 t/t1517: automate `git subcmd -h` tests outside a repositoryUsman Akinyemi, Jul 21, 2025
  21. D. Ben KnobleJul 26, 2025
  22. Usman AkinyemiJul 26, 2025
  23. D. Ben KnobleJul 30, 2025
  24. Junio C HamanoJul 28, 2025
  25. D. Ben KnobleAug 2, 2025
  26. Usman AkinyemiAug 3, 2025
  27. D. Ben KnobleJul 26, 2025
  28. D. Ben KnobleJul 26, 2025
  29. Usman AkinyemiJul 26, 2025
  30. D. Ben KnobleJul 30, 2025
  31. Junio C HamanoJul 28, 2025
  32. Phillip WoodAug 26, 2025
  33. D. Ben KnobleAug 28, 2025
  34. Phillip WoodAug 29, 2025
  35. D. Ben KnobleAug 29, 2025
  36. Junio C HamanoAug 29, 2025
  37. Usman AkinyemiAug 30, 2025
  38. 2/2 t5200: move `update-server-info -h` test from t1517Usman Akinyemi, Jul 21, 2025
  39. D. Ben KnobleJul 26, 2025
  40. 0/3 refactor t1517 to focus on help output outside a repositoryUsman Akinyemi, Aug 3, 2025
  41. 1/3 t/t1517: automate `git subcmd -h` tests outside a repositoryUsman Akinyemi, Aug 3, 2025
  42. D. Ben KnobleAug 3, 2025
  43. Junio C HamanoAug 3, 2025
  44. Usman AkinyemiAug 6, 2025
  45. 2/3 t5200: move `update-server-info -h` test from t1517Usman Akinyemi, Aug 3, 2025
  46. 3/3 t5304: move `prune -h` test from t1517Usman Akinyemi, Aug 3, 2025
  47. 0/3 refactor t1517 to focus on help output outside a repositoryUsman Akinyemi, Aug 8, 2025
  48. 1/3 t/t1517: automate `git subcmd -h` tests outside a repositoryUsman Akinyemi, Aug 8, 2025
  49. 2/3 t5200: move `update-server-info -h` test from t1517Usman Akinyemi, Aug 8, 2025
  50. 3/3 t5304: move `prune -h` test from t1517Usman Akinyemi, Aug 8, 2025
  51. Junio C HamanoAug 8, 2025
  52. D. Ben KnobleAug 9, 2025
  53. 7/7 t/t1517: move verify-tag -h test to t1517Usman Akinyemi, Jul 6, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.