@@ -7,158 +7,147 @@ test_description='utf-8 decomposed (nfd) converted to precomposed (nfc)'
7
7
8
8
. ./test-lib.sh
9
9
10
+ if ! test_have_prereq UTF8_NFD_TO_NFC
11
+ then
12
+ skip_all=" filesystem does not corrupt utf-8"
13
+ test_done
14
+ fi
15
+
16
+ # create utf-8 variables
10
17
Adiarnfc=` printf ' \303\204' `
11
18
Adiarnfd=` printf ' A\314\210' `
12
19
13
- # check if the feature is compiled in
14
- mkdir junk &&
15
- > junk/" $Adiarnfc " &&
16
- case " $( cd junk && echo * ) " in
17
- " $Adiarnfd " )
18
- test_nfd=1
19
- ;;
20
- * ) ;;
21
- esac
22
- rm -rf junk
20
+ Odiarnfc=` printf ' \303\226' `
21
+ Odiarnfd=` printf ' O\314\210' `
22
+ AEligatu=` printf ' \303\206' `
23
+ Invalidu=` printf ' \303\377' `
23
24
24
25
25
- if test " $test_nfd "
26
- then
27
- # create more utf-8 variables
28
- Odiarnfc=` printf ' \303\226' `
29
- Odiarnfd=` printf ' O\314\210' `
30
- AEligatu=` printf ' \303\206' `
31
- Invalidu=` printf ' \303\377' `
26
+ # Create a string with 255 bytes (decomposed)
27
+ Alongd=$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd # 21 Byte
28
+ Alongd=$Alongd$Alongd$Alongd # 63 Byte
29
+ Alongd=$Alongd$Alongd$Alongd$Alongd$Adiarnfd # 255 Byte
32
30
31
+ # Create a string with 254 bytes (precomposed)
32
+ Alongc=$AEligatu$AEligatu$AEligatu$AEligatu$AEligatu # 10 Byte
33
+ Alongc=$Alongc$Alongc$Alongc$Alongc$Alongc # 50 Byte
34
+ Alongc=$Alongc$Alongc$Alongc$Alongc$Alongc # 250 Byte
35
+ Alongc=$Alongc$AEligatu$AEligatu # 254 Byte
33
36
34
- # Create a string with 255 bytes (decomposed)
35
- Alongd=$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd$Adiarnfd # 21 Byte
36
- Alongd=$Alongd$Alongd$Alongd # 63 Byte
37
- Alongd=$Alongd$Alongd$Alongd$Alongd$Adiarnfd # 255 Byte
38
-
39
- # Create a string with 254 bytes (precomposed)
40
- Alongc=$AEligatu$AEligatu$AEligatu$AEligatu$AEligatu # 10 Byte
41
- Alongc=$Alongc$Alongc$Alongc$Alongc$Alongc # 50 Byte
42
- Alongc=$Alongc$Alongc$Alongc$Alongc$Alongc # 250 Byte
43
- Alongc=$Alongc$AEligatu$AEligatu # 254 Byte
44
-
45
- test_expect_success " detect if nfd needed" '
46
- precomposeunicode=`git config core.precomposeunicode` &&
47
- test "$precomposeunicode" = false &&
48
- git config core.precomposeunicode true
49
- '
50
- test_expect_success " setup" '
51
- >x &&
52
- git add x &&
53
- git commit -m "1st commit" &&
54
- git rm x &&
55
- git commit -m "rm x"
56
- '
57
- test_expect_success " setup case mac" '
58
- git checkout -b mac_os
59
- '
60
- # This will test nfd2nfc in readdir()
61
- test_expect_success " add file Adiarnfc" '
62
- echo f.Adiarnfc >f.$Adiarnfc &&
63
- git add f.$Adiarnfc &&
64
- git commit -m "add f.$Adiarnfc"
65
- '
66
- # This will test nfd2nfc in git stage()
67
- test_expect_success " stage file d.Adiarnfd/f.Adiarnfd" '
68
- mkdir d.$Adiarnfd &&
69
- echo d.$Adiarnfd/f.$Adiarnfd >d.$Adiarnfd/f.$Adiarnfd &&
70
- git stage d.$Adiarnfd/f.$Adiarnfd &&
71
- git commit -m "add d.$Adiarnfd/f.$Adiarnfd"
72
- '
73
- test_expect_success " add link Adiarnfc" '
74
- ln -s d.$Adiarnfd/f.$Adiarnfd l.$Adiarnfc &&
75
- git add l.$Adiarnfc &&
76
- git commit -m "add l.Adiarnfc"
77
- '
78
- # This will test git log
79
- test_expect_success " git log f.Adiar" '
80
- git log f.$Adiarnfc > f.Adiarnfc.log &&
81
- git log f.$Adiarnfd > f.Adiarnfd.log &&
82
- test -s f.Adiarnfc.log &&
83
- test -s f.Adiarnfd.log &&
84
- test_cmp f.Adiarnfc.log f.Adiarnfd.log &&
85
- rm f.Adiarnfc.log f.Adiarnfd.log
86
- '
87
- # This will test git ls-files
88
- test_expect_success " git lsfiles f.Adiar" '
89
- git ls-files f.$Adiarnfc > f.Adiarnfc.log &&
90
- git ls-files f.$Adiarnfd > f.Adiarnfd.log &&
91
- test -s f.Adiarnfc.log &&
92
- test -s f.Adiarnfd.log &&
93
- test_cmp f.Adiarnfc.log f.Adiarnfd.log &&
94
- rm f.Adiarnfc.log f.Adiarnfd.log
95
- '
96
- # This will test git mv
97
- test_expect_success " git mv" '
98
- git mv f.$Adiarnfd f.$Odiarnfc &&
99
- git mv d.$Adiarnfd d.$Odiarnfc &&
100
- git mv l.$Adiarnfd l.$Odiarnfc &&
101
- git commit -m "mv Adiarnfd Odiarnfc"
102
- '
103
- # Files can be checked out as nfc
104
- # And the link has been corrected from nfd to nfc
105
- test_expect_success " git checkout nfc" '
106
- rm f.$Odiarnfc &&
107
- git checkout f.$Odiarnfc
108
- '
109
- # Make it possible to checkout files with their NFD names
110
- test_expect_success " git checkout file nfd" '
111
- rm -f f.* &&
112
- git checkout f.$Odiarnfd
113
- '
114
- # Make it possible to checkout links with their NFD names
115
- test_expect_success " git checkout link nfd" '
116
- rm l.* &&
117
- git checkout l.$Odiarnfd
118
- '
119
- test_expect_success " setup case mac2" '
120
- git checkout master &&
121
- git reset --hard &&
122
- git checkout -b mac_os_2
123
- '
124
- # This will test nfd2nfc in git commit
125
- test_expect_success " commit file d2.Adiarnfd/f.Adiarnfd" '
126
- mkdir d2.$Adiarnfd &&
127
- echo d2.$Adiarnfd/f.$Adiarnfd >d2.$Adiarnfd/f.$Adiarnfd &&
128
- git add d2.$Adiarnfd/f.$Adiarnfd &&
129
- git commit -m "add d2.$Adiarnfd/f.$Adiarnfd" -- d2.$Adiarnfd/f.$Adiarnfd
130
- '
131
- test_expect_success " setup for long decomposed filename" '
132
- git checkout master &&
133
- git reset --hard &&
134
- git checkout -b mac_os_long_nfd_fn
135
- '
136
- test_expect_success " Add long decomposed filename" '
137
- echo longd >$Alongd &&
138
- git add * &&
139
- git commit -m "Long filename"
140
- '
141
- test_expect_success " setup for long precomposed filename" '
142
- git checkout master &&
143
- git reset --hard &&
144
- git checkout -b mac_os_long_nfc_fn
145
- '
146
- test_expect_success " Add long precomposed filename" '
147
- echo longc >$Alongc &&
148
- git add * &&
149
- git commit -m "Long filename"
150
- '
151
- # Test if the global core.precomposeunicode stops autosensing
152
- # Must be the last test case
153
- test_expect_success " respect git config --global core.precomposeunicode" '
154
- git config --global core.precomposeunicode true &&
155
- rm -rf .git &&
156
- git init &&
157
- precomposeunicode=`git config core.precomposeunicode` &&
158
- test "$precomposeunicode" = "true"
159
- '
160
- else
161
- say " Skipping nfc/nfd tests"
162
- fi
37
+ test_expect_success " detect if nfd needed" '
38
+ precomposeunicode=`git config core.precomposeunicode` &&
39
+ test "$precomposeunicode" = false &&
40
+ git config core.precomposeunicode true
41
+ '
42
+ test_expect_success " setup" '
43
+ >x &&
44
+ git add x &&
45
+ git commit -m "1st commit" &&
46
+ git rm x &&
47
+ git commit -m "rm x"
48
+ '
49
+ test_expect_success " setup case mac" '
50
+ git checkout -b mac_os
51
+ '
52
+ # This will test nfd2nfc in readdir()
53
+ test_expect_success " add file Adiarnfc" '
54
+ echo f.Adiarnfc >f.$Adiarnfc &&
55
+ git add f.$Adiarnfc &&
56
+ git commit -m "add f.$Adiarnfc"
57
+ '
58
+ # This will test nfd2nfc in git stage()
59
+ test_expect_success " stage file d.Adiarnfd/f.Adiarnfd" '
60
+ mkdir d.$Adiarnfd &&
61
+ echo d.$Adiarnfd/f.$Adiarnfd >d.$Adiarnfd/f.$Adiarnfd &&
62
+ git stage d.$Adiarnfd/f.$Adiarnfd &&
63
+ git commit -m "add d.$Adiarnfd/f.$Adiarnfd"
64
+ '
65
+ test_expect_success " add link Adiarnfc" '
66
+ ln -s d.$Adiarnfd/f.$Adiarnfd l.$Adiarnfc &&
67
+ git add l.$Adiarnfc &&
68
+ git commit -m "add l.Adiarnfc"
69
+ '
70
+ # This will test git log
71
+ test_expect_success " git log f.Adiar" '
72
+ git log f.$Adiarnfc > f.Adiarnfc.log &&
73
+ git log f.$Adiarnfd > f.Adiarnfd.log &&
74
+ test -s f.Adiarnfc.log &&
75
+ test -s f.Adiarnfd.log &&
76
+ test_cmp f.Adiarnfc.log f.Adiarnfd.log &&
77
+ rm f.Adiarnfc.log f.Adiarnfd.log
78
+ '
79
+ # This will test git ls-files
80
+ test_expect_success " git lsfiles f.Adiar" '
81
+ git ls-files f.$Adiarnfc > f.Adiarnfc.log &&
82
+ git ls-files f.$Adiarnfd > f.Adiarnfd.log &&
83
+ test -s f.Adiarnfc.log &&
84
+ test -s f.Adiarnfd.log &&
85
+ test_cmp f.Adiarnfc.log f.Adiarnfd.log &&
86
+ rm f.Adiarnfc.log f.Adiarnfd.log
87
+ '
88
+ # This will test git mv
89
+ test_expect_success " git mv" '
90
+ git mv f.$Adiarnfd f.$Odiarnfc &&
91
+ git mv d.$Adiarnfd d.$Odiarnfc &&
92
+ git mv l.$Adiarnfd l.$Odiarnfc &&
93
+ git commit -m "mv Adiarnfd Odiarnfc"
94
+ '
95
+ # Files can be checked out as nfc
96
+ # And the link has been corrected from nfd to nfc
97
+ test_expect_success " git checkout nfc" '
98
+ rm f.$Odiarnfc &&
99
+ git checkout f.$Odiarnfc
100
+ '
101
+ # Make it possible to checkout files with their NFD names
102
+ test_expect_success " git checkout file nfd" '
103
+ rm -f f.* &&
104
+ git checkout f.$Odiarnfd
105
+ '
106
+ # Make it possible to checkout links with their NFD names
107
+ test_expect_success " git checkout link nfd" '
108
+ rm l.* &&
109
+ git checkout l.$Odiarnfd
110
+ '
111
+ test_expect_success " setup case mac2" '
112
+ git checkout master &&
113
+ git reset --hard &&
114
+ git checkout -b mac_os_2
115
+ '
116
+ # This will test nfd2nfc in git commit
117
+ test_expect_success " commit file d2.Adiarnfd/f.Adiarnfd" '
118
+ mkdir d2.$Adiarnfd &&
119
+ echo d2.$Adiarnfd/f.$Adiarnfd >d2.$Adiarnfd/f.$Adiarnfd &&
120
+ git add d2.$Adiarnfd/f.$Adiarnfd &&
121
+ git commit -m "add d2.$Adiarnfd/f.$Adiarnfd" -- d2.$Adiarnfd/f.$Adiarnfd
122
+ '
123
+ test_expect_success " setup for long decomposed filename" '
124
+ git checkout master &&
125
+ git reset --hard &&
126
+ git checkout -b mac_os_long_nfd_fn
127
+ '
128
+ test_expect_success " Add long decomposed filename" '
129
+ echo longd >$Alongd &&
130
+ git add * &&
131
+ git commit -m "Long filename"
132
+ '
133
+ test_expect_success " setup for long precomposed filename" '
134
+ git checkout master &&
135
+ git reset --hard &&
136
+ git checkout -b mac_os_long_nfc_fn
137
+ '
138
+ test_expect_success " Add long precomposed filename" '
139
+ echo longc >$Alongc &&
140
+ git add * &&
141
+ git commit -m "Long filename"
142
+ '
143
+ # Test if the global core.precomposeunicode stops autosensing
144
+ # Must be the last test case
145
+ test_expect_success " respect git config --global core.precomposeunicode" '
146
+ git config --global core.precomposeunicode true &&
147
+ rm -rf .git &&
148
+ git init &&
149
+ precomposeunicode=`git config core.precomposeunicode` &&
150
+ test "$precomposeunicode" = "true"
151
+ '
163
152
164
153
test_done
0 commit comments