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

[PATCH 4/7] t: redirect stderr GIT_TRACE to descriptor 4

From
Jeff King <peff@peff.net>
Date
Mar 13, 2015, 04:50 UTC
Message-ID
<20150313045056.GD18532@peff.net>
In-Reply-To
<20150313044101.GA18476@peff.net>
If you run a test script like:
  GIT_TRACE=1 ./t0061-run-command.sh

you may get test failures, because some tests capture and check the stderr output from git commands (and with GIT_TRACE set to 1, the trace output will be included there).

When we see GIT_TRACE set like this, we print a warning to the user. However, we can do even better than that by just pointing it to descriptor 4, which all tests leave connected to the test script's stderr. That's likely what the user intended (and any scripts that do want to see GIT_TRACE output will set GIT_TRACE themselves).

Not only does this avoid false negatives in the tests, but it means the user will actually see trace output for git calls that redirect their stderr (whereas before, it was sometimes confusingly buried in a file).

Signed-off-by: Jeff King <peff@peff.net>
---
I only today figured out the GIT_TRACE=4 trick. Perhaps everybody else
did long ago, and I am just slow. :)

My first inclination was to mention it in the warning message below, but I cannot see a downside to automatically redirecting it. Even outside of test_expect_* we have the "4>&2" redirection, so we should hit even badly written scripts which call git outside of that environment.

 t/test-lib.sh | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index f4ba3ff..7dd4b4d 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -152,10 +152,7 @@ unset UNZIP
 
 case $(echo $GIT_TRACE |tr "[A-Z]" "[a-z]") in
 1|2|true)
-	echo "* warning: Some tests will not work if GIT_TRACE" \
-		"is set as to trace on STDERR ! *"
-	echo "* warning: Please set GIT_TRACE to something" \
-		"other than 1, 2 or true ! *"
+	GIT_TRACE=4
 	;;
 esac
 
-- 
2.3.2.472.geadab3c
Previous: Jeff KingNext: Jeff King
Message 6 of 12 in “fix transfer.hiderefs with smart http”
  1. 0/7 fix transfer.hiderefs with smart httpJeff King, Mar 13, 2015
  2. 1/7 upload-pack: fix transfer.hiderefs over smart-httpJeff King, Mar 13, 2015
  3. Junio C HamanoMar 13, 2015
  4. 2/7 upload-pack: do not check NULL return of lookup_unknown_objectJeff King, Mar 13, 2015
  5. 3/7 t: translate SIGINT to an exitJeff King, Mar 13, 2015
  6. 4/7 t: redirect stderr GIT_TRACE to descriptor 4Jeff King, Mar 13, 2015
  7. 5/7 t: pass GIT_TRACE through ApacheJeff King, Mar 13, 2015
  8. 6/7 t5541: move run_with_cmdline_limit to test-lib.shJeff King, Mar 13, 2015
  9. Eric SunshineMar 13, 2015
  10. 7/7 t5551: make EXPENSIVE test cheaperJeff King, Mar 13, 2015
  11. Jeff KingMar 13, 2015
  12. Duy NguyenMar 13, 2015

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.