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

[PATCH 10/11] t/README: add a note about don't saving stderr of compound commands

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Feb 23, 2018, 23:39 UTC
Message-ID
<20180223233951.11154-11-szeder.dev@gmail.com>
In-Reply-To
<20180223233951.11154-1-szeder.dev@gmail.com>

Explain in 't/README' why it is a bad idea to redirect and verify the stderr of compound commands, in the hope that future contributions will follow this advice and the test suite will keep working with '-x' tracing and /bin/sh.

While at it, since we can now run the test suite with '-x' without needing a Bash version supporting BASH_XTRACEFD, remove the now outdated caution note about non-Bash shells from the description of the '-x' option.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
---
 t/README | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/t/README b/t/README
index c430e9c52c..615682263e 100644
--- a/t/README
+++ b/t/README
@@ -84,9 +84,7 @@ appropriately before running "make".
 
 -x::
 	Turn on shell tracing (i.e., `set -x`) during the tests
-	themselves. Implies `--verbose`. Note that in non-bash shells,
-	this can cause failures in some tests which redirect and test
-	the output of shell functions. Use with caution.
+	themselves. Implies `--verbose`.
 	Ignored in test scripts that set the variable 'test_untraceable'
 	to a non-empty value, unless it's run with a Bash version
 	supporting BASH_XTRACEFD, i.e. v4.1 or later.
@@ -455,6 +453,22 @@ Don't:
    causing the next test to start in an unexpected directory.  Do so
    inside a subshell if necessary.
 
+ - save and verify the standard error of compound commands, i.e. group
+   commands, subshells, and shell functions (except test helper
+   functions like 'test_must_fail') like this:
+
+     ( cd dir && git cmd ) 2>error &&
+     test_cmp expect error
+
+   When running the test with '-x' tracing, then the trace of commands
+   executed in the compound command will be included in standard error
+   as well, quite possibly throwing off the subsequent checks examining
+   the output.  Instead, save only the relevant git command's standard
+   error:
+
+     ( cd dir && git cmd 2>../error ) &&
+     test_cmp expect error
+
  - Break the TAP output
 
    The raw output from your test may be interpreted by a TAP harness. TAP
-- 
2.16.2.400.g911b7cc0da
Previous: SZEDER GáborNext: SZEDER Gábor
Message 20 of 26 in “Make the test suite pass with '-x' and /bin/sh”
  1. 00/11 Make the test suite pass with '-x' and /bin/shSZEDER Gábor, Feb 23, 2018
  2. 02/11 t: add means to disable '-x' tracing for individual test scriptsSZEDER Gábor, Feb 23, 2018
  3. 01/11 t: prevent '-x' tracing from interfering with test helpers' stderrSZEDER Gábor, Feb 23, 2018
  4. SZEDER GáborFeb 24, 2018
  5. t: prevent '-x' tracing from interfering with test helpers' stderrSZEDER Gábor, Feb 25, 2018
  6. 03/11 t1507-rev-parse-upstream: don't check the stderr of a shell functionSZEDER Gábor, Feb 23, 2018
  7. 05/11 t5500-fetch-pack: don't check the stderr of a subshellSZEDER Gábor, Feb 23, 2018
  8. 07/11 t5570-git-daemon: don't check the stderr of a subshellSZEDER Gábor, Feb 23, 2018
  9. 11/11 travis-ci: run tests with '-x' tracingSZEDER Gábor, Feb 23, 2018
  10. 04/11 t3030-merge-recursive: don't check the stderr of a subshellSZEDER Gábor, Feb 23, 2018
  11. Eric SunshineFeb 24, 2018
  12. Junio C HamanoFeb 27, 2018
  13. Junio C HamanoFeb 27, 2018
  14. test_must_be_empty: make sure the file exists, not just emptyJunio C Hamano, Feb 27, 2018
  15. Stefan BellerFeb 27, 2018
  16. Jeff KingFeb 27, 2018
  17. SZEDER GáborFeb 27, 2018
  18. Junio C HamanoFeb 27, 2018
  19. SZEDER GáborFeb 28, 2018
  20. 10/11 t/README: add a note about don't saving stderr of compound commandsSZEDER Gábor, Feb 23, 2018
  21. 08/11 t9903-bash-prompt: don't check the stderr of __git_ps1()SZEDER Gábor, Feb 23, 2018
  22. 06/11 t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log fileSZEDER Gábor, Feb 23, 2018
  23. 09/11 t1510-repo-setup: mark as untraceable with '-x'SZEDER Gábor, Feb 23, 2018
  24. SZEDER GáborMar 2, 2018
  25. Jeff KingMar 3, 2018
  26. SZEDER GáborMar 5, 2018

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.