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

Re: [PATCH v1.1] lib-submodule-update: pass OVERWRITING_FAIL

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 30, 2020, 20:38 UTC
Message-ID
<xmqqpnbor9ng.fsf@gitster.c.googlers.com>
In-Reply-To
<f0d8dcf7dc52fe5ad2f1e173cd744bfdeb55eb45.1588242122.git.liu.denton@gmail.com>
Denton Liu <liu.denton@gmail.com> writes:
Show 6 quoted lines
> We are using `test_must_fail $command`. However, $command is not
> necessarily a git command; it could be a test helper function.
>
> In an effort to stop using test_must_fail with non-git commands, instead
> of invoking `test_must_fail $command`, run
> `OVERWRITING_FAIL=test_must_fail $command` instead.

This description alone does not make much sense to me as a reader. For "when OVERWRITING_FAIL environment variable is set to test_must_fail, something magical happens while running $command" to be true, $command (which may be "a git command", or "a test helper function") must be aware of, and must be told how to react to the OVERWRITING_FAIL environment variable. For example,

	test_must_fail test a = b
	test_must_fail git cat-file leaf HEAD

may succeed because "test a = b" and "git cat-file leaf HEAD" fail and test_must_fail would notice that these commands exited with non-zero status without crashing.

But how would the same happen for these commands,
	OVERWRITING_FAIL=test_must_fail test a = b
	OVERWRITING_FAIL=test_must_fail git cat-file leaf HEAD

which is what the above paragraph tells me to write "instead of using test_must_fail". There is something gravely missing from the description.

Is it that $command is *NEVER* a 'git' command, but just a selected few helper functions know how to honor this convention? If that is the case, perhaps can we teach these helper functions an *option* to expect a failure instead of expecting a success? These are all speculations, because the above description is too vague as a starting point for clear thinking.

> +			OVERWRITING_FAIL=test_must_fail $command replace_sub1_with_directory &&
> +			OVERWRITING_FAIL= &&

If we have given up the "single-shot environment export" for compatibility reasons (which is a sound decision to follow), we should make sure it is clear to our readers that we are not using that shell feature. I.e.

			export OVERWRITING_FAIL=test_must_fail &&
			$command replace_sub1_with_directory &&
			unset OVERWRITING_FAIL &&

I still do not understand how you are forcing an arbitrary $command to honor this environment variable, though.

Previous: Denton LiuNext: Denton Liu
Message 12 of 64 in “t: replace incorrect test_must_fail usage (part 5)”
  1. 0/4 t: replace incorrect test_must_fail usage (part 5)Denton Liu, Apr 29, 2020
  2. 1/4 lib-submodule-update: add space after function nameDenton Liu, Apr 29, 2020
  3. 3/4 lib-submodule-update: prepend "git" to $commandDenton Liu, Apr 29, 2020
  4. 2/4 lib-submodule-update: consolidate --recurse-submodulesDenton Liu, Apr 29, 2020
  5. Junio C HamanoApr 29, 2020
  6. 4/4 lib-submodule-update: pass OVERWRITING_FAILDenton Liu, Apr 29, 2020
  7. Junio C HamanoApr 29, 2020
  8. Denton LiuApr 30, 2020
  9. Junio C HamanoApr 30, 2020
  10. Denton LiuApr 30, 2020
  11. lib-submodule-update: pass OVERWRITING_FAILDenton Liu, Apr 30, 2020
  12. Junio C HamanoApr 30, 2020
  13. Denton LiuMay 1, 2020
  14. Junio C HamanoMay 1, 2020
  15. lib-submodule-update: pass OVERWRITING_FAILDenton Liu, May 5, 2020
  16. Taylor BlauApr 29, 2020
  17. Johannes SixtApr 29, 2020
  18. Re* [PATCH 0/4] t: replace incorrect test_must_fail usage (part 5)Junio C Hamano, Apr 29, 2020
  19. Taylor BlauApr 29, 2020
  20. Junio C HamanoApr 29, 2020
  21. Taylor BlauApr 29, 2020
  22. Junio C HamanoApr 29, 2020
  23. Taylor BlauApr 29, 2020
  24. Eric SunshineApr 29, 2020
  25. Junio C HamanoApr 29, 2020
  26. 0/4 t: replace incorrect test_must_fail usage (part 5)Denton Liu, May 21, 2020
  27. 1/4 lib-submodule-update: add space after function nameDenton Liu, May 21, 2020
  28. 2/4 lib-submodule-update: consolidate --recurse-submodulesDenton Liu, May 21, 2020
  29. 3/4 lib-submodule-update: prepend "git" to $commandDenton Liu, May 21, 2020
  30. Philip OakleyMay 21, 2020
  31. Denton LiuMay 21, 2020
  32. 4/4 lib-submodule-update: pass OVERWRITING_FAILDenton Liu, May 21, 2020
  33. Jeff KingMay 21, 2020
  34. Denton LiuMay 21, 2020
  35. Junio C HamanoMay 21, 2020
  36. Jeff KingMay 21, 2020
  37. Jeff KingMay 21, 2020
  38. Junio C HamanoMay 21, 2020
  39. Jeff KingMay 21, 2020
  40. 0/4 t: replace incorrect test_must_fail usage (part 5)Denton Liu, Jun 11, 2020
  41. 1/4 lib-submodule-update: add space after function nameDenton Liu, Jun 11, 2020
  42. 2/4 lib-submodule-update: consolidate --recurse-submodulesDenton Liu, Jun 11, 2020
  43. 3/4 lib-submodule-update: prepend "git" to $commandDenton Liu, Jun 11, 2020
  44. 4/4 lib-submodule-update: use callbacks in test_submodule_switch_common()Denton Liu, Jun 11, 2020
  45. Junio C HamanoJun 12, 2020
  46. Junio C HamanoJun 18, 2020
  47. 0/4 t: replace incorrect test_must_fail usage (part 5)Denton Liu, Jun 18, 2020
  48. 1/4 lib-submodule-update: add space after function nameDenton Liu, Jun 18, 2020
  49. 2/4 lib-submodule-update: consolidate --recurse-submodulesDenton Liu, Jun 18, 2020
  50. 3/4 lib-submodule-update: prepend "git" to $commandDenton Liu, Jun 18, 2020
  51. 4/4 lib-submodule-update: use callbacks in test_submodule_switch_common()Denton Liu, Jun 18, 2020
  52. Jeff KingJun 18, 2020
  53. 0/4 t: replace incorrect test_must_fail usage (part 5)Denton Liu, Jun 23, 2020
  54. 1/4 lib-submodule-update: add space after function nameDenton Liu, Jun 23, 2020
  55. 2/4 lib-submodule-update: consolidate --recurse-submodulesDenton Liu, Jun 23, 2020
  56. 4/4 lib-submodule-update: use callbacks in test_submodule_switch_common()Denton Liu, Jun 23, 2020
  57. 3/4 lib-submodule-update: prepend "git" to $commandDenton Liu, Jun 23, 2020
  58. Jeff KingJun 23, 2020
  59. lib-submodule-update: pass 'test_must_fail' as an argumentDenton Liu, Jun 23, 2020
  60. lib-submodule-update: pass 'test_must_fail' as an argumentDenton Liu, Jun 23, 2020
  61. Junio C HamanoJun 23, 2020
  62. Đoàn Trần Công DanhJun 24, 2020
  63. lib-submodule-update: pass 'test_must_fail' as an argumentDenton Liu, Jun 24, 2020
  64. Junio C HamanoJun 24, 2020

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.