mingw: fix regression in t1308-config-set
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 14 Jul 2016 13:58:59 +0000 (15:58 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Jul 2016 17:38:28 +0000 (10:38 -0700)
When we tried to fix in 58461bd (t1308: do not get fooled by symbolic
links to the source tree, 2016-06-02) an obscure case where the user
cd's into Git's source code via a symbolic link, a regression was
introduced that affects all test runs on Windows.

The original patch introducing the test case in question was careful to
use `$(pwd)` instead of `$PWD`.

This was done to account for the fact that Git's test suite uses shell
scripting even on Windows, where the shell's Unix-y paths are
incompatible with the main Git executable's idea of paths: it only
accepts Windows paths.

It is an awkward but necessary thing, then, to use `$(pwd)` (which gives
us a Windows path) when interacting with the Git executable and `$PWD`
(which gives the shell's idea of the current working directory in Unix-y
form) for shell scripts, including the test suite itself.

Obviously this broke the use case of the Git maintainer when changing
the working directory into Git's source code directory via a symlink,
i.e. when `$(pwd)` does not agree with `$PWD`.

However, we must not fix that use case at the expense of regressing
another use case.

Let's special-case Windows here, even if it is ugly, for lack of a more
elegant solution.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1308-config-set.sh
index cf716b469f10f37a591b32ef2d3eb6da4ba63f78..9d0dd177c7e9f122ed1d269912e2886efae95a21 100755 (executable)
@@ -233,11 +233,19 @@ cmdline_config="'foo.bar=from-cmdline'"
 test_expect_success 'iteration shows correct origins' '
        echo "[foo]bar = from-repo" >.git/config &&
        echo "[foo]bar = from-home" >.gitconfig &&
+       if test_have_prereq MINGW
+       then
+               # Use Windows path (i.e. *not* $HOME)
+               HOME_GITCONFIG=$(pwd)/.gitconfig
+       else
+               # Do not get fooled by symbolic links, i.e. $HOME != $(pwd)
+               HOME_GITCONFIG=$HOME/.gitconfig
+       fi &&
        cat >expect <<-EOF &&
        key=foo.bar
        value=from-home
        origin=file
-       name=$HOME/.gitconfig
+       name=$HOME_GITCONFIG
        scope=global
 
        key=foo.bar