#!/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_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