On Wed, Sep 28, 2016 at 04:30:45PM -0700, Junio C Hamano wrote:

> The tests for show-origin codepath in "git config" however cannot be
> tweaked with "--local" etc., because they wants to read also from
> $HOME/.gitconfig and make sure what comes from where.  Disable
> reading from the system-wide config with GIT_CONFIG_NOSYSTEM=1 for
> these tests.

I think anytime you would use GIT_CONFIG_NOSYSTEM over --local, it is an
indication that the test is trying to check how multiple sources
interact. And the right thing to do for them is to set GIT_ETC_GITCONFIG
to some known quantity. We just couldn't do that before, so we skipped
it.

IOW, something like the patch below (on top of yours). Note that the
commands that are doing a "--get" and not a "--list" don't actually seem
to need either (because they are getting the values out of the local
file anyway), so we could drop the setting of GIT_ETC_GITCONFIG from
them entirely.

diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index b998568..d2476a8 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -1234,6 +1234,11 @@ test_expect_success 'set up --show-origin tests' '
                [user]
                        relative = include
        EOF
+       cat >"$HOME"/etc-gitconfig <<-\EOF &&
+               [user]
+                       system = true
+                       override = system
+       EOF
        cat >"$HOME"/.gitconfig <<-EOF &&
                [user]
                        global = true
@@ -1252,6 +1257,8 @@ test_expect_success 'set up --show-origin tests' '
 
 test_expect_success '--show-origin with --list' '
        cat >expect <<-EOF &&
+               file:$HOME/etc-gitconfig        user.system=true
+               file:$HOME/etc-gitconfig        user.override=system
                file:$HOME/.gitconfig   user.global=true
                file:$HOME/.gitconfig   user.override=global
                file:$HOME/.gitconfig   
include.path=$INCLUDE_DIR/absolute.include
@@ -1262,14 +1269,16 @@ test_expect_success '--show-origin with --list' '
                file:.git/../include/relative.include   user.relative=include
                command line:   user.cmdline=true
        EOF
-       GIT_CONFIG_NOSYSTEM=1 \
+       GIT_ETC_GITCONFIG=$HOME/etc-gitconfig \
        git -c user.cmdline=true config --list --show-origin >output &&
        test_cmp expect output
 '
 
 test_expect_success '--show-origin with --list --null' '
        cat >expect <<-EOF &&
-               file:$HOME/.gitconfigQuser.global
+               file:$HOME/etc-gitconfigQuser.system
+               trueQfile:$HOME/etc-gitconfigQuser.override
+               systemQfile:$HOME/.gitconfigQuser.global
                trueQfile:$HOME/.gitconfigQuser.override
                globalQfile:$HOME/.gitconfigQinclude.path
                
$INCLUDE_DIR/absolute.includeQfile:$INCLUDE_DIR/absolute.includeQuser.absolute
@@ -1280,7 +1289,7 @@ test_expect_success '--show-origin with --list --null' '
                includeQcommand line:Quser.cmdline
                trueQ
        EOF
-       GIT_CONFIG_NOSYSTEM=1 \
+       GIT_ETC_GITCONFIG=$HOME/etc-gitconfig \
        git -c user.cmdline=true config --null --list --show-origin >output.raw 
&&
        nul_to_q <output.raw >output &&
        # The here-doc above adds a newline that the --null output would not
@@ -1304,7 +1313,7 @@ test_expect_success '--show-origin with --get-regexp' '
                file:$HOME/.gitconfig   user.global true
                file:.git/config        user.local true
        EOF
-       GIT_CONFIG_NOSYSTEM=1 \
+       GIT_ETC_GITCONFIG=$HOME/etc-gitconfig \
        git config --show-origin --get-regexp "user\.[g|l].*" >output &&
        test_cmp expect output
 '
@@ -1313,7 +1322,7 @@ test_expect_success '--show-origin getting a single key' '
        cat >expect <<-\EOF &&
                file:.git/config        local
        EOF
-       GIT_CONFIG_NOSYSTEM=1 \
+       GIT_ETC_GITCONFIG=$HOME/etc-gitconfig \
        git config --show-origin user.override >output &&
        test_cmp expect output
 '

Reply via email to