aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Sunshine <sunshine@sunshineco.com>2018-01-21 03:07:28 -0500
committerJunio C Hamano <gitster@pobox.com>2018-01-21 21:12:17 -0800
commitb6947af2294ea0c814f5b4cb8737c782895519b2 (patch)
tree8612ab2a6b5cf9d45777774a443ea9b7fdc5451b
parente26f7f19b6c7485f04234946a59ab8f4fd21d6d1 (diff)
downloadgit-b6947af2294ea0c814f5b4cb8737c782895519b2.tar.gz
git-b6947af2294ea0c814f5b4cb8737c782895519b2.tar.xz
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>
-rwxr-xr-xt/t5601-clone.sh17
1 files changed, 17 insertions, 0 deletions
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 50e40abb1..55df602ae 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -573,4 +573,21 @@ test_expect_success 'GIT_TRACE_PACKFILE produces a usable pack' '
git -C replay.git index-pack -v --stdin <tmp.pack
'
+hex2oct () {
+ perl -ne 'printf "\\%03o", hex for /../g'
+}
+
+test_expect_success 'clone on case-insensitive fs' '
+ git init icasefs &&
+ (
+ cd icasefs
+ o=$(git hash-object -w --stdin </dev/null | hex2oct) &&
+ t=$(printf "100644 X\0${o}100644 x\0${o}" |
+ git hash-object -w -t tree --stdin) &&
+ c=$(git commit-tree -m bogus $t) &&
+ git update-ref refs/heads/bogus $c &&
+ git clone -b bogus . bogus
+ )
+'
+
test_done