|  | #!/bin/sh | 
|  |  | 
|  | test_description='Various filesystem issues' | 
|  |  | 
|  | . ./test-lib.sh | 
|  |  | 
|  | auml=`printf '\xc3\xa4'` | 
|  | aumlcdiar=`printf '\x61\xcc\x88'` | 
|  |  | 
|  | case_insensitive= | 
|  | test_expect_success 'see if we expect ' ' | 
|  |  | 
|  | test_case=test_expect_success | 
|  | test_unicode=test_expect_success | 
|  | mkdir junk && | 
|  | echo good >junk/CamelCase && | 
|  | echo bad >junk/camelcase && | 
|  | if test "$(cat junk/CamelCase)" != good | 
|  | then | 
|  | test_case=test_expect_failure | 
|  | case_insensitive=t | 
|  | say "will test on a case insensitive filesystem" | 
|  | fi && | 
|  | rm -fr junk && | 
|  | mkdir junk && | 
|  | >junk/"$auml" && | 
|  | case "$(cd junk && echo *)" in | 
|  | "$aumlcdiar") | 
|  | test_unicode=test_expect_failure | 
|  | say "will test on a unicode corrupting filesystem" | 
|  | ;; | 
|  | *)	;; | 
|  | esac && | 
|  | rm -fr junk | 
|  | ' | 
|  |  | 
|  | if test "$case_insensitive" | 
|  | 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" ' | 
|  |  | 
|  | ! git config --bool core.ignorecase >/dev/null || | 
|  | test $(git config --bool core.ignorecase) = 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_case 'rename (case change)' ' | 
|  |  | 
|  | git mv camelcase CamelCase && | 
|  | git commit -m "rename" | 
|  |  | 
|  | ' | 
|  |  | 
|  | $test_case 'merge (case change)' ' | 
|  |  | 
|  | rm -f CamelCase && | 
|  | rm -f camelcase && | 
|  | git reset --hard initial && | 
|  | git merge topic | 
|  |  | 
|  | ' | 
|  |  | 
|  | $test_case 'add (with different case)' ' | 
|  |  | 
|  | git reset --hard initial && | 
|  | rm camelcase && | 
|  | echo 1 >CamelCase && | 
|  | git add CamelCase && | 
|  | test $(git-ls-files | grep -i camelcase | wc -l) = 1 | 
|  |  | 
|  | ' | 
|  |  | 
|  | test_expect_success "setup unicode normalization tests" ' | 
|  |  | 
|  | test_create_repo unicode && | 
|  | cd unicode && | 
|  | 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 |