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

Re: [PATCH v4 3/3] test-lib: make BAIL_OUT() work in tests and prereq

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 1, 2021, 23:13 UTC
Message-ID
<xmqqv907yl40.fsf@gitster.g>
In-Reply-To
<20211201085315.576865-4-fs@gigacodes.de>
Fabian Stelzer <fs@gigacodes.de> writes:
Show 22 quoted lines
> BAIL_OUT() is meant to abort the whole test run and print a message with
> a standard prefix that can be parsed to stdout. Since for every test the
> normal fd`s are redirected in test_eval_ this output would not be seen
> when used within the context of a test or prereq like we do in
> test_have_prereq(). To make this function work in these contexts we move
> the setup of the fd aliases a few lines up before the first use of
> BAIL_OUT() and then have this function always print to the alias.
>
> Signed-off-by: Fabian Stelzer <fs@gigacodes.de>
> ---
>  t/test-lib.sh | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/t/test-lib.sh b/t/test-lib.sh
> index 9090ce1225..14a7aeae0f 100644
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -589,6 +589,15 @@ USER_TERM="$TERM"
>  TERM=dumb
>  export TERM USER_TERM
>  
> +# What is written by tests to stdout and stderr is sent so different places
"sent so" -> "sent to".  I'll tweak locally, so no need to resend.
Show 17 quoted lines
> +# depending on the test mode (e.g. /dev/null in non-verbose mode, piped to tee
> +# with --tee option, etc.). We save the original stdin to FD #6 and stdout and
> +# stderr to #5 and #7, so that the test framework can use them (e.g. for
> +# printing errors within the test framework) independently of the test mode.
> +exec 5>&1
> +exec 6<&0
> +exec 7>&2
> +
>  _error_exit () {
>  	finalize_junit_xml
>  	GIT_EXIT_OK=t
> @@ -612,7 +621,7 @@ BAIL_OUT () {
>  	local bail_out="Bail out! "
>  	local message="$1"
>  
> -	say_color error $bail_out "$message"
> +	say_color error $bail_out "$message" >&5

This is merely a style thing, but as commands get longer, it becomes easier to spot redirection if it is written immediately after the verb, i.e.

	say_color >&5 error $bail_out "$message"
Show 13 quoted lines
>  	_error_exit
>  }
>  
> @@ -637,9 +646,6 @@ then
>  	exit 0
>  fi
>  
> -exec 5>&1
> -exec 6<&0
> -exec 7>&2
>  if test "$verbose_log" = "t"
>  then
>  	exec 3>>"$GIT_TEST_TEE_OUTPUT_FILE" 4>&3
Looks good.  Thanks.
Previous: Fabian StelzerNext: Adam Dinwoodie
Message 28 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.