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 <sunshine@sunshineco.com> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Eric Sunshine committed
Jan 21, 2018 at 03:07 UTC
b6947af2294ea0c814f5b4cb8737c782895519b2
1 file changed
+17
t/t5601-clone.sh
+17
@@ -573,4 +573,21 @@ test_expect_success 'GIT_TRACE_PACKFILE produces a usable pack' '
573
git -C replay.git index-pack -v --stdin <tmp.pack
574
'
575
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
+
593
test_done