From 1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 11 Jan 2020 23:36:56 +0000 Subject: Squashed 'third_party/git/' content from commit cb71568594 git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7 --- t/t0050-filesystem.sh | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100755 t/t0050-filesystem.sh (limited to 't/t0050-filesystem.sh') diff --git a/t/t0050-filesystem.sh b/t/t0050-filesystem.sh new file mode 100755 index 000000000000..192c94eccd13 --- /dev/null +++ b/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 -- cgit 1.4.1