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

Re: [PATCH 03/12] t: drop useless sane_unset GIT_* calls

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 21, 2014, 21:24 UTC
Message-ID
<xmqqy503s0s0.fsf@gitster.dls.corp.google.com>
In-Reply-To
<20140320231433.GC8479@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 9 quoted lines
> Several test scripts manually unset GIT_CONFIG and other
> GIT_* variables. These are generally taken care of for us by
> test-lib.sh already.
>
> Unsetting these is not only useless, but can be confusing to
> a reader, who may wonder why some tests in a script unset
> them and others do not (t0001 is particularly guilty of this
> inconsistency, probably because many of its tests predate
> the test-lib.sh environment-cleansing).
Show 12 quoted lines
> Note that we cannot always get rid of such unsetting. For
> example, t9130 can drop the GIT_CONFIG unset, but not the
> GIT_DIR one, because lib-git-svn.sh sets the latter. And in
> t1000, we unset GIT_TEMPLATE_DIR, which is explicitly
> initialized by test-lib.sh.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> I suppose one could make an argument that test-lib.sh may later change
> the set of variables it clears, and these unsets are documenting an
> explicit need of each test. I'd find that more compelling if it were
> actually applied consistently.

Hmph. I am looking at "git show HEAD^:t/t0001-init.sh" after applying this patch, and it does look consistently done with GIT_CONFIG and GIT_DIR (I am not sure about GIT_WORK_TREE but from a cursory read it is done consistently for tests on non-bare repositories).

So I would actually agree with your alternative interpretation "Unsetting these is useless, but it does serve documentation purpose---without having to see what the state of the environment when the subprocess is started, the reader can understand what is being tested", rather than the one in the log message.

Having said that, I am perfectly OK with the change to t0001 in this patch, if we added at the very beginning of the test sequence a comment that says:

    Below, creation and use of repositories are tested with various
    combinations of environment settings and command line flags.
    They are done inside subshells to avoid leaking temporary
    environment settings to later tests *and* assumes that the
    initial environment does not have have GIT_DIR, GIT_CONFIG, and
    GIT_WORK_TREE defined.
or something.
Show 146 quoted lines
>  t/t0001-init.sh                 | 15 ---------------
>  t/t9130-git-svn-authors-file.sh |  1 -
>  t/t9400-git-cvsserver-server.sh |  1 -
>  3 files changed, 17 deletions(-)
>
> diff --git a/t/t0001-init.sh b/t/t0001-init.sh
> index 9fb582b..ddc8160 100755
> --- a/t/t0001-init.sh
> +++ b/t/t0001-init.sh
> @@ -25,7 +25,6 @@ check_config () {
>  
>  test_expect_success 'plain' '
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE &&
>  		mkdir plain &&
>  		cd plain &&
>  		git init
> @@ -35,7 +34,6 @@ test_expect_success 'plain' '
>  
>  test_expect_success 'plain nested in bare' '
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE &&
>  		git init --bare bare-ancestor.git &&
>  		cd bare-ancestor.git &&
>  		mkdir plain-nested &&
> @@ -47,7 +45,6 @@ test_expect_success 'plain nested in bare' '
>  
>  test_expect_success 'plain through aliased command, outside any git repo' '
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE &&
>  		HOME=$(pwd)/alias-config &&
>  		export HOME &&
>  		mkdir alias-config &&
> @@ -65,7 +62,6 @@ test_expect_success 'plain through aliased command, outside any git repo' '
>  
>  test_expect_failure 'plain nested through aliased command' '
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE &&
>  		git init plain-ancestor-aliased &&
>  		cd plain-ancestor-aliased &&
>  		echo "[alias] aliasedinit = init" >>.git/config &&
> @@ -78,7 +74,6 @@ test_expect_failure 'plain nested through aliased command' '
>  
>  test_expect_failure 'plain nested in bare through aliased command' '
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE &&
>  		git init --bare bare-ancestor-aliased.git &&
>  		cd bare-ancestor-aliased.git &&
>  		echo "[alias] aliasedinit = init" >>config &&
> @@ -91,7 +86,6 @@ test_expect_failure 'plain nested in bare through aliased command' '
>  
>  test_expect_success 'plain with GIT_WORK_TREE' '
>  	if (
> -		sane_unset GIT_DIR &&
>  		mkdir plain-wt &&
>  		cd plain-wt &&
>  		GIT_WORK_TREE=$(pwd) git init
> @@ -104,7 +98,6 @@ test_expect_success 'plain with GIT_WORK_TREE' '
>  
>  test_expect_success 'plain bare' '
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE GIT_CONFIG &&
>  		mkdir plain-bare-1 &&
>  		cd plain-bare-1 &&
>  		git --bare init
> @@ -114,7 +107,6 @@ test_expect_success 'plain bare' '
>  
>  test_expect_success 'plain bare with GIT_WORK_TREE' '
>  	if (
> -		sane_unset GIT_DIR GIT_CONFIG &&
>  		mkdir plain-bare-2 &&
>  		cd plain-bare-2 &&
>  		GIT_WORK_TREE=$(pwd) git --bare init
> @@ -128,7 +120,6 @@ test_expect_success 'plain bare with GIT_WORK_TREE' '
>  test_expect_success 'GIT_DIR bare' '
>  
>  	(
> -		sane_unset GIT_CONFIG &&
>  		mkdir git-dir-bare.git &&
>  		GIT_DIR=git-dir-bare.git git init
>  	) &&
> @@ -138,7 +129,6 @@ test_expect_success 'GIT_DIR bare' '
>  test_expect_success 'init --bare' '
>  
>  	(
> -		sane_unset GIT_DIR GIT_WORK_TREE GIT_CONFIG &&
>  		mkdir init-bare.git &&
>  		cd init-bare.git &&
>  		git init --bare
> @@ -149,7 +139,6 @@ test_expect_success 'init --bare' '
>  test_expect_success 'GIT_DIR non-bare' '
>  
>  	(
> -		sane_unset GIT_CONFIG &&
>  		mkdir non-bare &&
>  		cd non-bare &&
>  		GIT_DIR=.git git init
> @@ -160,7 +149,6 @@ test_expect_success 'GIT_DIR non-bare' '
>  test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' '
>  
>  	(
> -		sane_unset GIT_CONFIG &&
>  		mkdir git-dir-wt-1.git &&
>  		GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init
>  	) &&
> @@ -170,7 +158,6 @@ test_expect_success 'GIT_DIR & GIT_WORK_TREE (1)' '
>  test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' '
>  
>  	if (
> -		sane_unset GIT_CONFIG &&
>  		mkdir git-dir-wt-2.git &&
>  		GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-2.git git --bare init
>  	)
> @@ -183,8 +170,6 @@ test_expect_success 'GIT_DIR & GIT_WORK_TREE (2)' '
>  test_expect_success 'reinit' '
>  
>  	(
> -		sane_unset GIT_CONFIG GIT_WORK_TREE GIT_CONFIG &&
> -
>  		mkdir again &&
>  		cd again &&
>  		git init >out1 2>err1 &&
> diff --git a/t/t9130-git-svn-authors-file.sh b/t/t9130-git-svn-authors-file.sh
> index c3443ce..a812783 100755
> --- a/t/t9130-git-svn-authors-file.sh
> +++ b/t/t9130-git-svn-authors-file.sh
> @@ -97,7 +97,6 @@ test_expect_success 'fresh clone with svn.authors-file in config' '
>  		test x = x"$(git config svn.authorsfile)" &&
>  		test_config="$HOME"/.gitconfig &&
>  		sane_unset GIT_DIR &&
> -		sane_unset GIT_CONFIG &&
>  		git config --global \
>  		  svn.authorsfile "$HOME"/svn-authors &&
>  		test x"$HOME"/svn-authors = x"$(git config svn.authorsfile)" &&
> diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh
> index 3edc408..ed98e64 100755
> --- a/t/t9400-git-cvsserver-server.sh
> +++ b/t/t9400-git-cvsserver-server.sh
> @@ -25,7 +25,6 @@ perl -e 'use DBI; use DBD::SQLite' >/dev/null 2>&1 || {
>      test_done
>  }
>  
> -unset GIT_DIR GIT_CONFIG
>  WORKDIR=$(pwd)
>  SERVERDIR=$(pwd)/gitcvs.git
>  git_config="$SERVERDIR/config"
Previous: Jeff KingNext: Jeff King
Message 11 of 28 in “tests: set temp variables using 'env' in test function instead of subshell”
  1. tests: set temp variables using 'env' in test function instead of subshellDavid Tran, Mar 18, 2014
  2. Junio C HamanoMar 18, 2014
  3. Jeff KingMar 18, 2014
  4. Junio C HamanoMar 18, 2014
  5. Jeff KingMar 18, 2014
  6. Junio C HamanoMar 19, 2014
  7. 0/12 GIT_CONFIG in the test suiteJeff King, Mar 20, 2014
  8. 01/12 t/Makefile: stop setting GIT_CONFIGJeff King, Mar 20, 2014
  9. 02/12 t/test-lib: drop redundant unset of GIT_CONFIGJeff King, Mar 20, 2014
  10. 03/12 t: drop useless sane_unset GIT_* callsJeff King, Mar 20, 2014
  11. Junio C HamanoMar 21, 2014
  12. Jeff KingMar 24, 2014
  13. Junio C HamanoMar 24, 2014
  14. Junio C HamanoMar 25, 2014
  15. 04/12 t: stop using GIT_CONFIG to cross repo boundariesJeff King, Mar 20, 2014
  16. Junio C HamanoMar 21, 2014
  17. Jeff KingMar 24, 2014
  18. 05/12 t: prefer "git config --file" to GIT_CONFIG with test_must_failJeff King, Mar 20, 2014
  19. 06/12 t: prefer "git config --file" to GIT_CONFIGJeff King, Mar 20, 2014
  20. 07/12 t0001: make symlink reinit test more carefulJeff King, Mar 20, 2014
  21. 08/12 t0001: use test_path_is_*Jeff King, Mar 20, 2014
  22. 09/12 t0001: use test_config_globalJeff King, Mar 20, 2014
  23. 10/12 t0001: use test_must_failJeff King, Mar 20, 2014
  24. 11/12 t0001: drop useless subshellsJeff King, Mar 20, 2014
  25. Eric SunshineMar 21, 2014
  26. 12/12 t0001: drop subshells just for "cd"Jeff King, Mar 20, 2014
  27. Eric SunshineMar 18, 2014
  28. Eric SunshineMar 18, 2014

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.