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

[PATCH 3/3] tests: scrub environment of GIT_* variables

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Mar 15, 2011, 07:04 UTC
Message-ID
<20110315070445.GC29530@elie>
In-Reply-To
<20110315064909.GA25738@elie>

Variables from the inherited environment that are meaningful to git can break tests in undesirable ways. For example,

 GIT_PAGER=more sh t5400-send-pack.sh -v -i
hangs.  So unset them in test-lib.
The variables to unset were found with 'git grep -F -e '"GIT_'.
Exception: leave the GIT_USE_LOOKUP variable from v1.5.6-rc0~134^2~1
(sha1-lookup: more memory efficient search in sorted list of SHA-1,
2007-12-29) alone, since it is about trying an alternate
implementation strategy rather than changing semantics and it can be
useful to compare performance with and without it set.

Longer term, it would be nice to just unset all GIT_* variables (with exceptions like GIT_TRACE and GIT_USE_LOOKUP) with some magic using the "env" command. That is less straightforward than one might hope because the values of environment variables can contain embedded newlines and equal signs and "env -0" is not portable.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
IIRC the patch is based on v1.7.4.1.  So it does not handle
GIT_ASK_YESNO or GIT_TRACE_PACKET; they're too new.
Thanks for reading.  Hopefully it was not too dull.
 t/test-lib.sh |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 8ae03c7..26c6707 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -43,7 +43,11 @@ TERM=dumb
 export LANG LC_ALL PAGER TERM TZ
 EDITOR=:
 unset VISUAL
+unset GIT_ASKPASS
 unset GIT_EDITOR
+unset GIT_PAGER
+unset GIT_MAN_VIEWER
+unset GIT_SSH
 unset AUTHOR_DATE
 unset AUTHOR_EMAIL
 unset AUTHOR_NAME
@@ -62,16 +66,43 @@ unset GIT_DIR
 unset GIT_WORK_TREE
 unset GIT_EXTERNAL_DIFF
 unset GIT_INDEX_FILE
+unset GIT_GRAFT_FILE
 unset GIT_OBJECT_DIRECTORY
 unset GIT_CEILING_DIRECTORIES
+unset GIT_DISCOVERY_ACROSS_FILESYSTEM
 unset SHA1_FILE_DIRECTORIES
 unset SHA1_FILE_DIRECTORY
+unset GIT_NO_REPLACE_OBJECTS
+unset GIT_CONFIG_PARAMETERS
 unset GIT_NOTES_REF
 unset GIT_NOTES_DISPLAY_REF
 unset GIT_NOTES_REWRITE_REF
 unset GIT_NOTES_REWRITE_MODE
 unset GIT_REFLOG_ACTION
 unset GIT_CHERRY_PICK_HELP
+unset GIT_CURL_FTP_NO_EPSV
+unset GIT_CURL_VERBOSE
+unset GIT_PROJECT_ROOT
+unset GIT_PROXY_COMMAND
+unset GIT_HTTP_EXPORT_ALL
+unset GIT_HTTP_LOW_SPEED_LIMIT
+unset GIT_HTTP_LOW_SPEED_TIME
+unset GIT_HTTP_MAX_REQUESTS
+unset GIT_HTTP_USER_AGENT
+unset GIT_SSL_CAINFO
+unset GIT_SSL_CAPATH
+unset GIT_SSL_CERT
+unset GIT_SSL_CERT_PASSWORD_PROTECTED
+unset GIT_SSL_KEY
+unset GIT_SSL_NO_VERIFY
+unset GIT_FLUSH
+unset GIT_PAGER_IN_USE
+unset GIT_SEND_EMAIL_NOTTY
+unset GIT_DEBUG_LOOKUP
+unset GIT_DEBUG_SEND_PACK
+unset GIT_DEBUG_TESTGIT
+unset GIT_TRANSLOOP_DEBUG
+unset GIT_TRANSPORT_HELPER_DEBUG
 unset GIT_QUIET
 GIT_MERGE_VERBOSITY=5
 export GIT_MERGE_VERBOSITY
-- 
1.7.4.1
Previous: Jonathan NiederNext: Jeff King
Message 9 of 15 in “tests: unsetting variables that influence the outcome”
  1. 0/3 tests: unsetting variables that influence the outcomeJonathan Nieder, Mar 15, 2011
  2. 1/3 tests: protect against GIT_ATTR_NOGLOBAL from environmentJonathan Nieder, Mar 15, 2011
  3. 2/3 tests: suppress global and system gitattributesJonathan Nieder, Mar 15, 2011
  4. Jeff KingMar 15, 2011
  5. 2/3 Re: tests: suppress global and system gitattributesJonathan Nieder, Mar 15, 2011
  6. 1/3 gitattributes: drop support for GIT_ATTR_NOGLOBALJonathan Nieder, Mar 15, 2011
  7. 2/3 config: drop support for GIT_CONFIG_NOGLOBALJonathan Nieder, Mar 15, 2011
  8. 3/3 tests: suppress system gitattributesJonathan Nieder, Mar 15, 2011
  9. 3/3 tests: scrub environment of GIT_* variablesJonathan Nieder, Mar 15, 2011
  10. Jeff KingMar 15, 2011
  11. 0/2 tests: stop hard-coding the list of GIT_* vars to scrubJonathan Nieder, Mar 15, 2011
  12. 1/2 tests: stop worrying about obsolete environment variablesJonathan Nieder, Mar 15, 2011
  13. 2/2 tests: scrub environment of GIT_* variablesJonathan Nieder, Mar 15, 2011
  14. Junio C HamanoMar 15, 2011
  15. Jeff KingMar 15, 2011

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.