]>
Commit | Line | Data |
---|---|---|
b560707a SP |
1 | #!/bin/sh |
2 | ||
3 | test_description='Various filesystem issues' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
77e57265 JN |
7 | auml=$(printf '\303\244') |
8 | aumlcdiar=$(printf '\141\314\210') | |
b560707a | 9 | |
9a3658b9 MG |
10 | if test_have_prereq CASE_INSENSITIVE_FS |
11 | then | |
5b46a428 | 12 | say "will test on a case insensitive filesystem" |
9a3658b9 MG |
13 | test_case=test_expect_failure |
14 | else | |
15 | test_case=test_expect_success | |
16 | fi | |
17 | ||
5b0b5dd4 MG |
18 | if test_have_prereq UTF8_NFD_TO_NFC |
19 | then | |
5b46a428 | 20 | say "will test on a unicode corrupting filesystem" |
5b0b5dd4 MG |
21 | test_unicode=test_expect_failure |
22 | else | |
23 | test_unicode=test_expect_success | |
24 | fi | |
25 | ||
2b71b522 | 26 | test_have_prereq SYMLINKS || |
64e61f2d | 27 | say "will test on a filesystem lacking symbolic links" |
5b46a428 | 28 | |
9a3658b9 | 29 | if test_have_prereq CASE_INSENSITIVE_FS |
1c51c7d7 SP |
30 | then |
31 | test_expect_success "detection of case insensitive filesystem during repo init" ' | |
1c51c7d7 SP |
32 | test $(git config --bool core.ignorecase) = true |
33 | ' | |
34 | else | |
35 | test_expect_success "detection of case insensitive filesystem during repo init" ' | |
bfe998fc JK |
36 | { |
37 | test_must_fail git config --bool core.ignorecase >/dev/null || | |
38 | test $(git config --bool core.ignorecase) = false | |
39 | } | |
1c51c7d7 SP |
40 | ' |
41 | fi | |
42 | ||
2b71b522 | 43 | if test_have_prereq SYMLINKS |
64e61f2d JS |
44 | then |
45 | test_expect_success "detection of filesystem w/o symlink support during repo init" ' | |
bfe998fc JK |
46 | { |
47 | test_must_fail git config --bool core.symlinks || | |
48 | test "$(git config --bool core.symlinks)" = true | |
49 | } | |
64e61f2d JS |
50 | ' |
51 | else | |
52 | test_expect_success "detection of filesystem w/o symlink support during repo init" ' | |
2b71b522 MG |
53 | v=$(git config --bool core.symlinks) && |
54 | test "$v" = false | |
64e61f2d JS |
55 | ' |
56 | fi | |
57 | ||
b560707a | 58 | test_expect_success "setup case tests" ' |
b4a299d8 | 59 | git config core.ignorecase true && |
b560707a SP |
60 | touch camelcase && |
61 | git add camelcase && | |
62 | git commit -m "initial" && | |
63 | git tag initial && | |
64 | git checkout -b topic && | |
65 | git mv camelcase tmp && | |
66 | git mv tmp CamelCase && | |
67 | git commit -m "rename" && | |
68 | git checkout -f master | |
b560707a SP |
69 | ' |
70 | ||
decd3c0c | 71 | test_expect_success 'rename (case change)' ' |
b560707a SP |
72 | git mv camelcase CamelCase && |
73 | git commit -m "rename" | |
b560707a SP |
74 | ' |
75 | ||
004c0be7 | 76 | test_expect_success 'merge (case change)' ' |
0047dd2f SP |
77 | rm -f CamelCase && |
78 | rm -f camelcase && | |
b560707a SP |
79 | git reset --hard initial && |
80 | git merge topic | |
b560707a SP |
81 | ' |
82 | ||
0d7c2430 JH |
83 | |
84 | ||
4084475b | 85 | test_expect_failure CASE_INSENSITIVE_FS 'add (with different case)' ' |
8a19aaab SP |
86 | git reset --hard initial && |
87 | rm camelcase && | |
88 | echo 1 >CamelCase && | |
89 | git add CamelCase && | |
0d7c2430 JH |
90 | camel=$(git ls-files | grep -i camelcase) && |
91 | test $(echo "$camel" | wc -l) = 1 && | |
92 | test "z$(git cat-file blob :$camel)" = z1 | |
8a19aaab SP |
93 | ' |
94 | ||
b560707a | 95 | test_expect_success "setup unicode normalization tests" ' |
336e2e27 TB |
96 | test_create_repo unicode && |
97 | cd unicode && | |
92b0c8be | 98 | git config core.precomposeunicode false && |
336e2e27 TB |
99 | touch "$aumlcdiar" && |
100 | git add "$aumlcdiar" && | |
101 | git commit -m initial && | |
102 | git tag initial && | |
103 | git checkout -b topic && | |
104 | git mv $aumlcdiar tmp && | |
105 | git mv tmp "$auml" && | |
106 | git commit -m rename && | |
107 | git checkout -f master | |
b560707a SP |
108 | ' |
109 | ||
110 | $test_unicode 'rename (silent unicode normalization)' ' | |
336e2e27 TB |
111 | git mv "$aumlcdiar" "$auml" && |
112 | git commit -m rename | |
b560707a SP |
113 | ' |
114 | ||
115 | $test_unicode 'merge (silent unicode normalization)' ' | |
336e2e27 TB |
116 | git reset --hard initial && |
117 | git merge topic | |
b560707a SP |
118 | ' |
119 | ||
120 | test_done |