Skip to content

Commit b6947af

Browse files
sunshinecogitster
authored andcommitted
t5601-clone: test case-conflicting files on case-insensitive filesystem
A recently introduced regression caused a segfault at clone time on case-insensitive filesystems when filenames differing only in case are present. This bug has already been fixed (repository: pre-initialize hash algo pointer, 2018-01-18), but it's not the first time similar problems have arisen. Therefore, introduce a test to catch this case and protect against future regressions. Signed-off-by: Eric Sunshine <[email protected]> Signed-off-by: brian m. carlson <[email protected]> Signed-off-by: Eric Sunshine <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e26f7f1 commit b6947af

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

t/t5601-clone.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,4 +573,21 @@ test_expect_success 'GIT_TRACE_PACKFILE produces a usable pack' '
573573
git -C replay.git index-pack -v --stdin <tmp.pack
574574
'
575575

576+
hex2oct () {
577+
perl -ne 'printf "\\%03o", hex for /../g'
578+
}
579+
580+
test_expect_success 'clone on case-insensitive fs' '
581+
git init icasefs &&
582+
(
583+
cd icasefs
584+
o=$(git hash-object -w --stdin </dev/null | hex2oct) &&
585+
t=$(printf "100644 X\0${o}100644 x\0${o}" |
586+
git hash-object -w -t tree --stdin) &&
587+
c=$(git commit-tree -m bogus $t) &&
588+
git update-ref refs/heads/bogus $c &&
589+
git clone -b bogus . bogus
590+
)
591+
'
592+
576593
test_done

0 commit comments

Comments
 (0)