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

Re: [PATCH v2 2/2] test-lib: introduce required prereq for test runs

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 19, 2021, 14:26 UTC
Message-ID
<211119.86sfvs2p9w.gmgdl@evledraar.gmail.com>
In-Reply-To
<20211119140953.cgdppgv3f64hqbdx@fs>
On Fri, Nov 19 2021, Fabian Stelzer wrote:
Show 28 quoted lines
> On 19.11.2021 12:13, Ævar Arnfjörð Bjarmason wrote:
>>
>>On Wed, Nov 17 2021, Fabian Stelzer wrote:
>>
>>> In certain environments or for specific test scenarios we might expect a
>>> specific prerequisite check to succeed. Therefore we would like to
>>> trigger an error when running our tests if this is not the case.
>>
>>trigger an error but...
>>
>>> To remedy this we add the environment variable GIT_TEST_REQUIRE_PREREQ
>>> which can be set to a comma separated list of prereqs. If one of these
>>> prereq tests fail then the whole test run will abort.
>>
>>..here it's "abort the whole test run". If that's what you want use
>>BAIL_OUT, not error. See: 234383cd401 (test-lib.sh: use "Bail out!"
>>syntax on bad SANITIZE=leak use, 2021-10-14)
>>
>
> Hm, while testing this change i noticed another problem that i really
> have no idea how to fix.
> When a test uses test_have_prereq then the error/BAIL_OUT message will only be printed
> when run with '-v'. This is not the case when the prereq is specified
> in the test header. The test run will abort, but no error will be
> printed which can be quite confusing :/
> I guess this has something to do with how tests are run in subshells and
> their outputs only printed with -v. Maybe there should be some kind of
> override for BAIL_OUT at least? Not sure if/how this could be done.

It has to do with how we juggle file descriptors around, see test_eval_ in test-lib.sh.

So the "real" stdout is fd 5, not 1 when you're in a prereq.
Just:
    BAIL_OUT "bad" >&5
Will work, maybe it's a good idea to have:
	BAIL_OUT_PREREQ () {
		BAIL_OUT $@ >&5
	}
Sorry, I forgot about that caveat when suggesting it.
Previous: Fabian StelzerNext: Fabian Stelzer
Message 9 of 29 in “test-lib: improve missing prereq handling”
  1. 0/2 test-lib: improve missing prereq handlingFabian Stelzer, Nov 17, 2021
  2. 1/2 test-lib: show missing prereq summaryFabian Stelzer, Nov 17, 2021
  3. 2/2 test-lib: introduce required prereq for test runsFabian Stelzer, Nov 17, 2021
  4. Junio C HamanoNov 18, 2021
  5. Fabian StelzerNov 19, 2021
  6. Ævar Arnfjörð BjarmasonNov 19, 2021
  7. Fabian StelzerNov 19, 2021
  8. Fabian StelzerNov 19, 2021
  9. Ævar Arnfjörð BjarmasonNov 19, 2021
  10. Fabian StelzerNov 19, 2021
  11. Ævar Arnfjörð BjarmasonNov 19, 2021
  12. 0/3 test-lib: improve missing prereq handlingFabian Stelzer, Nov 20, 2021
  13. 1/3 test-lib: show missing prereq summaryFabian Stelzer, Nov 20, 2021
  14. 2/3 test-lib: introduce required prereq for test runsFabian Stelzer, Nov 20, 2021
  15. 3/3 test-lib: make BAIL_OUT() work in tests and prereqFabian Stelzer, Nov 20, 2021
  16. Ævar Arnfjörð BjarmasonNov 22, 2021
  17. Junio C HamanoNov 22, 2021
  18. Fabian StelzerNov 26, 2021
  19. Junio C HamanoNov 26, 2021
  20. Fabian StelzerNov 27, 2021
  21. Junio C HamanoNov 28, 2021
  22. Fabian StelzerNov 30, 2021
  23. Ævar Arnfjörð BjarmasonNov 30, 2021
  24. 0/3 test-lib: improve missing prereq handlingFabian Stelzer, Dec 1, 2021
  25. 1/3 test-lib: show missing prereq summaryFabian Stelzer, Dec 1, 2021
  26. 2/3 test-lib: introduce required prereq for test runsFabian Stelzer, Dec 1, 2021
  27. 3/3 test-lib: make BAIL_OUT() work in tests and prereqFabian Stelzer, Dec 1, 2021
  28. Junio C HamanoDec 1, 2021
  29. Adam DinwoodieDec 1, 2021

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.