diff options
author | Vincent Ambo <Vincent Ambo> | 2020-01-11T23·36+0000 |
---|---|---|
committer | Vincent Ambo <Vincent Ambo> | 2020-01-11T23·40+0000 |
commit | 7ef0d62730840ded097b524104cc0a0904591a63 (patch) | |
tree | a670f96103667aeca4789a95d94ca0dff550c4ce /third_party/git/t/t0050-filesystem.sh | |
parent | 6a2a3007077818e24a3d56fc492ada9206a10cf0 (diff) | |
parent | 1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 (diff) |
merge(third_party/git): Merge squashed git subtree at v2.23.0 r/373
Merge commit '1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5' as 'third_party/git'
Diffstat (limited to 'third_party/git/t/t0050-filesystem.sh')
-rwxr-xr-x | third_party/git/t/t0050-filesystem.sh | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/third_party/git/t/t0050-filesystem.sh b/third_party/git/t/t0050-filesystem.sh new file mode 100755 index 000000000000..192c94eccd13 --- /dev/null +++ b/third_party/git/t/t0050-filesystem.sh @@ -0,0 +1,134 @@ +#!/bin/sh + +test_description='Various filesystem issues' + +. ./test-lib.sh + +auml=$(printf '\303\244') +aumlcdiar=$(printf '\141\314\210') + +if test_have_prereq CASE_INSENSITIVE_FS +then + say "will test on a case insensitive filesystem" + test_case=test_expect_failure +else + test_case=test_expect_success +fi + +if test_have_prereq UTF8_NFD_TO_NFC +then + say "will test on a unicode corrupting filesystem" + test_unicode=test_expect_failure +else + test_unicode=test_expect_success +fi + +test_have_prereq SYMLINKS || + say "will test on a filesystem lacking symbolic links" + +if test_have_prereq CASE_INSENSITIVE_FS +then +test_expect_success "detection of case insensitive filesystem during repo init" ' + test $(git config --bool core.ignorecase) = true +' +else +test_expect_success "detection of case insensitive filesystem during repo init" ' + { + test_must_fail git config --bool core.ignorecase >/dev/null || + test $(git config --bool core.ignorecase) = false + } +' +fi + +if test_have_prereq SYMLINKS +then +test_expect_success "detection of filesystem w/o symlink support during repo init" ' + { + test_must_fail git config --bool core.symlinks || + test "$(git config --bool core.symlinks)" = true + } +' +else +test_expect_success "detection of filesystem w/o symlink support during repo init" ' + v=$(git config --bool core.symlinks) && + test "$v" = false +' +fi + +test_expect_success "setup case tests" ' + git config core.ignorecase true && + touch camelcase && + git add camelcase && + git commit -m "initial" && + git tag initial && + git checkout -b topic && + git mv camelcase tmp && + git mv tmp CamelCase && + git commit -m "rename" && + git checkout -f master +' + +test_expect_success 'rename (case change)' ' + git mv camelcase CamelCase && + git commit -m "rename" +' + +test_expect_success 'merge (case change)' ' + rm -f CamelCase && + rm -f camelcase && + git reset --hard initial && + git merge topic +' + +test_expect_success CASE_INSENSITIVE_FS 'add directory (with different case)' ' + git reset --hard initial && + mkdir -p dir1/dir2 && + echo >dir1/dir2/a && + echo >dir1/dir2/b && + git add dir1/dir2/a && + git add dir1/DIR2/b && + git ls-files >actual && + cat >expected <<-\EOF && + camelcase + dir1/dir2/a + dir1/dir2/b + EOF + test_cmp expected actual +' + +test_expect_failure CASE_INSENSITIVE_FS 'add (with different case)' ' + git reset --hard initial && + rm camelcase && + echo 1 >CamelCase && + git add CamelCase && + camel=$(git ls-files | grep -i camelcase) && + test $(echo "$camel" | wc -l) = 1 && + test "z$(git cat-file blob :$camel)" = z1 +' + +test_expect_success "setup unicode normalization tests" ' + test_create_repo unicode && + cd unicode && + git config core.precomposeunicode false && + touch "$aumlcdiar" && + git add "$aumlcdiar" && + git commit -m initial && + git tag initial && + git checkout -b topic && + git mv $aumlcdiar tmp && + git mv tmp "$auml" && + git commit -m rename && + git checkout -f master +' + +$test_unicode 'rename (silent unicode normalization)' ' + git mv "$aumlcdiar" "$auml" && + git commit -m rename +' + +$test_unicode 'merge (silent unicode normalization)' ' + git reset --hard initial && + git merge topic +' + +test_done |