Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > From: Johannes Schindelin <johannes.schindelin@xxxxxx> > > On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible > that the idea Bash has of the current directory differs in case from > what Git thinks it is. That's totally okay, though, and we should not > expect otherwise. > > On Windows, for example, when you call > > cd C:\GIT-SDK-64 > > in a PowerShell and there exists a directory called `C:\git-sdk-64`, the > current directory will be reported in all upper-case. Even in a Bash > that you might call from that PowerShell. Git, however, will have > normalized this via `GetFinalPathByHandle()`, and the expectation in > t0001 that the recorded gitdir will match what `pwd` says will be > violated. > > Let's address this by comparing these paths in a case-insensitive > manner when `core.ignoreCase` is `true`. > > Reported by Jameson Miller. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > > Again, re-sending, as something in the mail (my guess is the > non-ASCII character in Martin's surname) seems to upset vger so > much that it drops the mail unceremoniously. Hmph, but in the copy I am responding to, I can see non-ASCII Martin's surname in the CC: header just fine, so vger may not be at fault, perhaps? In any case, cmp-fspath looks nicely implemented. Will queue. Thanks. > > t/t0001-init.sh | 22 ++++++++-------------- > t/test-lib-functions.sh | 15 +++++++++++++++ > 2 files changed, 23 insertions(+), 14 deletions(-) > > diff --git a/t/t0001-init.sh b/t/t0001-init.sh > index 42a263cada..b796fa25ac 100755 > --- a/t/t0001-init.sh > +++ b/t/t0001-init.sh > @@ -310,8 +310,8 @@ test_expect_success 'init prefers command line to GIT_DIR' ' > test_expect_success 'init with separate gitdir' ' > rm -rf newdir && > git init --separate-git-dir realgitdir newdir && > - echo "gitdir: $(pwd)/realgitdir" >expected && > - test_cmp expected newdir/.git && > + newdir_git="$(cat newdir/.git)" && > + test_cmp_fspath "$(pwd)/realgitdir" "${newdir_git#gitdir: }" && > test_path_is_dir realgitdir/refs > ' > > @@ -360,12 +360,9 @@ test_expect_success 're-init on .git file' ' > ' > > test_expect_success 're-init to update git link' ' > - ( > - cd newdir && > - git init --separate-git-dir ../surrealgitdir > - ) && > - echo "gitdir: $(pwd)/surrealgitdir" >expected && > - test_cmp expected newdir/.git && > + git -C newdir init --separate-git-dir ../surrealgitdir && > + newdir_git="$(cat newdir/.git)" && > + test_cmp_fspath "$(pwd)/surrealgitdir" "${newdir_git#gitdir: }" && > test_path_is_dir surrealgitdir/refs && > test_path_is_missing realgitdir/refs > ' > @@ -373,12 +370,9 @@ test_expect_success 're-init to update git link' ' > test_expect_success 're-init to move gitdir' ' > rm -rf newdir realgitdir surrealgitdir && > git init newdir && > - ( > - cd newdir && > - git init --separate-git-dir ../realgitdir > - ) && > - echo "gitdir: $(pwd)/realgitdir" >expected && > - test_cmp expected newdir/.git && > + git -C newdir init --separate-git-dir ../realgitdir && > + newdir_git="$(cat newdir/.git)" && > + test_cmp_fspath "$(pwd)/realgitdir" "${newdir_git#gitdir: }" && > test_path_is_dir realgitdir/refs > ' > > diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh > index 80402a428f..26218a6c53 100644 > --- a/t/test-lib-functions.sh > +++ b/t/test-lib-functions.sh > @@ -879,6 +879,21 @@ test_cmp_rev () { > fi > } > > +# Compare paths respecting core.ignoreCase > +test_cmp_fspath () { > + if test "x$1" = "x$2" > + then > + return 0 > + fi > + > + if test true != "$(git config --get --type=bool core.ignorecase)" > + then > + return 1 > + fi > + > + test "x$(echo "$1" | tr A-Z a-z)" = "x$(echo "$2" | tr A-Z a-z)" > +} > + > # Print a sequence of integers in increasing order, either with > # two arguments (start and end): > # > -- > gitgitgadget