blob: 9309d366be105d440107d87fde393ee91b772a31
1 | #!/bin/sh |
2 | # Copyright 2010 by Denys Vlasenko |
3 | # Licensed under GPLv2, see file LICENSE in this source tree. |
4 | |
5 | . ./testing.sh |
6 | test -f "$bindir/.config" && . "$bindir/.config" |
7 | |
8 | rm -rf ls.testdir 2>/dev/null |
9 | mkdir ls.testdir || exit 1 |
10 | |
11 | # testing "test name" "command" "expected result" "file input" "stdin" |
12 | |
13 | # With Unicode provided by libc locale, I'm not sure this test can pass. |
14 | # I suspect we might fail to skip exactly correct number of bytes |
15 | # over broked unicode sequences. |
16 | test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ |
17 | && test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ |
18 | && test x"$CONFIG_SUBST_WCHAR" = x"63" \ |
19 | && test x"$CONFIG_LAST_SUPPORTED_WCHAR" = x"767" \ |
20 | && test x"$CONFIG_FEATURE_LS_SORTFILES" = x"y" \ |
21 | && testing "ls unicode test with codepoints limited to 767" \ |
22 | "(cd ls.testdir && sh ../ls.mk_uni_tests) && ls -1 ls.testdir" \ |
23 | '0001_1__Some_correct_UTF-8_text___________________________________________| |
24 | 0002_2__Boundary_condition_test_cases_____________________________________| |
25 | 0003_2.1__First_possible_sequence_of_a_certain_length_____________________| |
26 | 0004_2.1.2__2_bytes__U-00000080_:________"?"______________________________| |
27 | 0005_2.1.3__3_bytes__U-00000800_:________"?"______________________________| |
28 | 0006_2.1.4__4_bytes__U-00010000_:________"?"______________________________| |
29 | 0007_2.1.5__5_bytes__U-00200000_:________"?"______________________________| |
30 | 0008_2.1.6__6_bytes__U-04000000_:________"?"______________________________| |
31 | 0009_2.2__Last_possible_sequence_of_a_certain_length______________________| |
32 | 0010_2.2.1__1_byte___U-0000007F_:________"?"______________________________| |
33 | 0011_2.2.2__2_bytes__U-000007FF_:________"?"______________________________| |
34 | 0012_2.2.3__3_bytes__U-0000FFFF_:________"?"______________________________| |
35 | 0013_2.2.4__4_bytes__U-001FFFFF_:________"?"______________________________| |
36 | 0014_2.2.5__5_bytes__U-03FFFFFF_:________"?"______________________________| |
37 | 0015_2.2.6__6_bytes__U-7FFFFFFF_:________"?"______________________________| |
38 | 0016_2.3__Other_boundary_conditions_______________________________________| |
39 | 0017_2.3.1__U-0000D7FF_=_ed_9f_bf_=_"?"___________________________________| |
40 | 0018_2.3.2__U-0000E000_=_ee_80_80_=_"?"___________________________________| |
41 | 0019_2.3.3__U-0000FFFD_=_ef_bf_bd_=_"?"___________________________________| |
42 | 0020_2.3.4__U-0010FFFF_=_f4_8f_bf_bf_=_"?"________________________________| |
43 | 0021_2.3.5__U-00110000_=_f4_90_80_80_=_"?"________________________________| |
44 | 0022_3__Malformed_sequences_______________________________________________| |
45 | 0023_3.1__Unexpected_continuation_bytes___________________________________| |
46 | 0024_3.1.1__First_continuation_byte_0x80:_"?"_____________________________| |
47 | 0025_3.1.2__Last__continuation_byte_0xbf:_"?"_____________________________| |
48 | 0026_3.1.3__2_continuation_bytes:_"??"____________________________________| |
49 | 0027_3.1.4__3_continuation_bytes:_"???"___________________________________| |
50 | 0028_3.1.5__4_continuation_bytes:_"????"__________________________________| |
51 | 0029_3.1.6__5_continuation_bytes:_"?????"_________________________________| |
52 | 0030_3.1.7__6_continuation_bytes:_"??????"________________________________| |
53 | 0031_3.1.8__7_continuation_bytes:_"???????"_______________________________| |
54 | 0032_3.1.9__Sequence_of_all_64_possible_continuation_bytes__0x80-0xbf_:___| |
55 | 0033____"????????????????_________________________________________________| |
56 | 0034_____????????????????_________________________________________________| |
57 | 0035_____????????????????_________________________________________________| |
58 | 0036_____????????????????"________________________________________________| |
59 | 0037_3.2__Lonely_start_characters_________________________________________| |
60 | 0038_3.2.1__All_32_first_bytes_of_2-byte_sequences__0xc0-0xdf_,___________| |
61 | 0039________each_followed_by_a_space_character:___________________________| |
62 | 0040____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?__________________________________| |
63 | 0041_____?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________| |
64 | 0042_3.2.2__All_16_first_bytes_of_3-byte_sequences__0xe0-0xef_,___________| |
65 | 0043________each_followed_by_a_space_character:___________________________| |
66 | 0044____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________| |
67 | 0045_3.2.3__All_8_first_bytes_of_4-byte_sequences__0xf0-0xf7_,____________| |
68 | 0046________each_followed_by_a_space_character:___________________________| |
69 | 0047____"?_?_?_?_?_?_?_?_"________________________________________________| |
70 | 0048_3.2.4__All_4_first_bytes_of_5-byte_sequences__0xf8-0xfb_,____________| |
71 | 0049________each_followed_by_a_space_character:___________________________| |
72 | 0050____"?_?_?_?_"________________________________________________________| |
73 | 0051_3.2.5__All_2_first_bytes_of_6-byte_sequences__0xfc-0xfd_,____________| |
74 | 0052________each_followed_by_a_space_character:___________________________| |
75 | 0053____"?_?_"____________________________________________________________| |
76 | 0054_3.3__Sequences_with_last_continuation_byte_missing___________________| |
77 | 0055_3.3.1__2-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
78 | 0056_3.3.2__3-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
79 | 0057_3.3.3__4-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
80 | 0058_3.3.4__5-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
81 | 0059_3.3.5__6-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
82 | 0060_3.3.6__2-byte_sequence_with_last_byte_missing__U-000007FF_:_"?"______| |
83 | 0061_3.3.7__3-byte_sequence_with_last_byte_missing__U-0000FFFF_:_"?"______| |
84 | 0062_3.3.8__4-byte_sequence_with_last_byte_missing__U-001FFFFF_:_"?"______| |
85 | 0063_3.3.9__5-byte_sequence_with_last_byte_missing__U-03FFFFFF_:_"?"______| |
86 | 0064_3.3.10_6-byte_sequence_with_last_byte_missing__U-7FFFFFFF_:_"?"______| |
87 | 0065_3.4__Concatenation_of_incomplete_sequences___________________________| |
88 | 0066____"??????????"______________________________________________________| |
89 | 0067_3.5__Impossible_bytes________________________________________________| |
90 | 0068_3.5.1__fe_=_"?"______________________________________________________| |
91 | 0069_3.5.2__ff_=_"?"______________________________________________________| |
92 | 0070_3.5.3__fe_fe_ff_ff_=_"????"__________________________________________| |
93 | 0071_4__Overlong_sequences________________________________________________| |
94 | 0072_4.1__Examples_of_an_overlong_ASCII_character_________________________| |
95 | 0073_4.1.1_U+002F_=_c0_af_____________=_"?"_______________________________| |
96 | 0074_4.1.2_U+002F_=_e0_80_af__________=_"?"_______________________________| |
97 | 0075_4.1.3_U+002F_=_f0_80_80_af_______=_"?"_______________________________| |
98 | 0076_4.1.4_U+002F_=_f8_80_80_80_af____=_"?"_______________________________| |
99 | 0077_4.1.5_U+002F_=_fc_80_80_80_80_af_=_"?"_______________________________| |
100 | 0078_4.2__Maximum_overlong_sequences______________________________________| |
101 | 0079_4.2.1__U-0000007F_=_c1_bf_____________=_"?"__________________________| |
102 | 0080_4.2.2__U-000007FF_=_e0_9f_bf__________=_"?"__________________________| |
103 | 0081_4.2.3__U-0000FFFF_=_f0_8f_bf_bf_______=_"?"__________________________| |
104 | 0082_4.2.4__U-001FFFFF_=_f8_87_bf_bf_bf____=_"?"__________________________| |
105 | 0083_4.2.5__U-03FFFFFF_=_fc_83_bf_bf_bf_bf_=_"?"__________________________| |
106 | 0084_4.3__Overlong_representation_of_the_NUL_character____________________| |
107 | 0085_4.3.1__U+0000_=_c0_80_____________=_"?"______________________________| |
108 | 0086_4.3.2__U+0000_=_e0_80_80__________=_"?"______________________________| |
109 | 0087_4.3.3__U+0000_=_f0_80_80_80_______=_"?"______________________________| |
110 | 0088_4.3.4__U+0000_=_f8_80_80_80_80____=_"?"______________________________| |
111 | 0089_4.3.5__U+0000_=_fc_80_80_80_80_80_=_"?"______________________________| |
112 | 0090_5__Illegal_code_positions____________________________________________| |
113 | 0091_5.1_Single_UTF-16_surrogates_________________________________________| |
114 | 0092_5.1.1__U+D800_=_ed_a0_80_=_"?"_______________________________________| |
115 | 0093_5.1.2__U+DB7F_=_ed_ad_bf_=_"?"_______________________________________| |
116 | 0094_5.1.3__U+DB80_=_ed_ae_80_=_"?"_______________________________________| |
117 | 0095_5.1.4__U+DBFF_=_ed_af_bf_=_"?"_______________________________________| |
118 | 0096_5.1.5__U+DC00_=_ed_b0_80_=_"?"_______________________________________| |
119 | 0097_5.1.6__U+DF80_=_ed_be_80_=_"?"_______________________________________| |
120 | 0098_5.1.7__U+DFFF_=_ed_bf_bf_=_"?"_______________________________________| |
121 | 0099_5.2_Paired_UTF-16_surrogates_________________________________________| |
122 | 0100_5.2.1__U+D800_U+DC00_=_ed_a0_80_ed_b0_80_=_"??"______________________| |
123 | 0101_5.2.2__U+D800_U+DFFF_=_ed_a0_80_ed_bf_bf_=_"??"______________________| |
124 | 0102_5.2.3__U+DB7F_U+DC00_=_ed_ad_bf_ed_b0_80_=_"??"______________________| |
125 | 0103_5.2.4__U+DB7F_U+DFFF_=_ed_ad_bf_ed_bf_bf_=_"??"______________________| |
126 | 0104_5.2.5__U+DB80_U+DC00_=_ed_ae_80_ed_b0_80_=_"??"______________________| |
127 | 0105_5.2.6__U+DB80_U+DFFF_=_ed_ae_80_ed_bf_bf_=_"??"______________________| |
128 | 0106_5.2.7__U+DBFF_U+DC00_=_ed_af_bf_ed_b0_80_=_"??"______________________| |
129 | 0107_5.2.8__U+DBFF_U+DFFF_=_ed_af_bf_ed_bf_bf_=_"??"______________________| |
130 | 0108_5.3_Other_illegal_code_positions_____________________________________| |
131 | 0109_5.3.1__U+FFFE_=_ef_bf_be_=_"?"_______________________________________| |
132 | 0110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________| |
133 | ' "" "" |
134 | |
135 | # Currently fails on "0080_4.2.2__U-000007FF_=_e0_9f_bf" line |
136 | test x"$CONFIG_UNICODE_SUPPORT" = x"y" \ |
137 | && test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \ |
138 | && test x"$CONFIG_SUBST_WCHAR" = x"63" \ |
139 | && test x"$CONFIG_LAST_SUPPORTED_WCHAR" = x"0" \ |
140 | && testing "ls unicode test with unlimited codepoints" \ |
141 | "(cd ls.testdir && sh ../ls.mk_uni_tests) && ls -1 ls.testdir" \ |
142 | '0001_1__Some_correct_UTF-8_text___________________________________________| |
143 | 0002_2__Boundary_condition_test_cases_____________________________________| |
144 | 0003_2.1__First_possible_sequence_of_a_certain_length_____________________| |
145 | 0004_2.1.2__2_bytes__U-00000080_:________"?"______________________________| |
146 | 0005_2.1.3__3_bytes__U-00000800_:________"ࠀ"______________________________| |
147 | 0006_2.1.4__4_bytes__U-00010000_:________"𐀀"______________________________| |
148 | 0007_2.1.5__5_bytes__U-00200000_:________"?"______________________________| |
149 | 0008_2.1.6__6_bytes__U-04000000_:________"?"______________________________| |
150 | 0009_2.2__Last_possible_sequence_of_a_certain_length______________________| |
151 | 0010_2.2.1__1_byte___U-0000007F_:________"?"______________________________| |
152 | 0011_2.2.2__2_bytes__U-000007FF_:________"߿"______________________________| |
153 | 0012_2.2.3__3_bytes__U-0000FFFF_:________"?"______________________________| |
154 | 0013_2.2.4__4_bytes__U-001FFFFF_:________"?"______________________________| |
155 | 0014_2.2.5__5_bytes__U-03FFFFFF_:________"?"______________________________| |
156 | 0015_2.2.6__6_bytes__U-7FFFFFFF_:________"?"______________________________| |
157 | 0016_2.3__Other_boundary_conditions_______________________________________| |
158 | 0017_2.3.1__U-0000D7FF_=_ed_9f_bf_=_""___________________________________| |
159 | 0018_2.3.2__U-0000E000_=_ee_80_80_=_"?"___________________________________| |
160 | 0019_2.3.3__U-0000FFFD_=_ef_bf_bd_=_"�"___________________________________| |
161 | 0020_2.3.4__U-0010FFFF_=_f4_8f_bf_bf_=_"?"________________________________| |
162 | 0021_2.3.5__U-00110000_=_f4_90_80_80_=_"?"________________________________| |
163 | 0022_3__Malformed_sequences_______________________________________________| |
164 | 0023_3.1__Unexpected_continuation_bytes___________________________________| |
165 | 0024_3.1.1__First_continuation_byte_0x80:_"?"_____________________________| |
166 | 0025_3.1.2__Last__continuation_byte_0xbf:_"?"_____________________________| |
167 | 0026_3.1.3__2_continuation_bytes:_"??"____________________________________| |
168 | 0027_3.1.4__3_continuation_bytes:_"???"___________________________________| |
169 | 0028_3.1.5__4_continuation_bytes:_"????"__________________________________| |
170 | 0029_3.1.6__5_continuation_bytes:_"?????"_________________________________| |
171 | 0030_3.1.7__6_continuation_bytes:_"??????"________________________________| |
172 | 0031_3.1.8__7_continuation_bytes:_"???????"_______________________________| |
173 | 0032_3.1.9__Sequence_of_all_64_possible_continuation_bytes__0x80-0xbf_:___| |
174 | 0033____"????????????????_________________________________________________| |
175 | 0034_____????????????????_________________________________________________| |
176 | 0035_____????????????????_________________________________________________| |
177 | 0036_____????????????????"________________________________________________| |
178 | 0037_3.2__Lonely_start_characters_________________________________________| |
179 | 0038_3.2.1__All_32_first_bytes_of_2-byte_sequences__0xc0-0xdf_,___________| |
180 | 0039________each_followed_by_a_space_character:___________________________| |
181 | 0040____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?__________________________________| |
182 | 0041_____?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________| |
183 | 0042_3.2.2__All_16_first_bytes_of_3-byte_sequences__0xe0-0xef_,___________| |
184 | 0043________each_followed_by_a_space_character:___________________________| |
185 | 0044____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________| |
186 | 0045_3.2.3__All_8_first_bytes_of_4-byte_sequences__0xf0-0xf7_,____________| |
187 | 0046________each_followed_by_a_space_character:___________________________| |
188 | 0047____"?_?_?_?_?_?_?_?_"________________________________________________| |
189 | 0048_3.2.4__All_4_first_bytes_of_5-byte_sequences__0xf8-0xfb_,____________| |
190 | 0049________each_followed_by_a_space_character:___________________________| |
191 | 0050____"?_?_?_?_"________________________________________________________| |
192 | 0051_3.2.5__All_2_first_bytes_of_6-byte_sequences__0xfc-0xfd_,____________| |
193 | 0052________each_followed_by_a_space_character:___________________________| |
194 | 0053____"?_?_"____________________________________________________________| |
195 | 0054_3.3__Sequences_with_last_continuation_byte_missing___________________| |
196 | 0055_3.3.1__2-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
197 | 0056_3.3.2__3-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
198 | 0057_3.3.3__4-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
199 | 0058_3.3.4__5-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
200 | 0059_3.3.5__6-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______| |
201 | 0060_3.3.6__2-byte_sequence_with_last_byte_missing__U-000007FF_:_"?"______| |
202 | 0061_3.3.7__3-byte_sequence_with_last_byte_missing__U-0000FFFF_:_"?"______| |
203 | 0062_3.3.8__4-byte_sequence_with_last_byte_missing__U-001FFFFF_:_"?"______| |
204 | 0063_3.3.9__5-byte_sequence_with_last_byte_missing__U-03FFFFFF_:_"?"______| |
205 | 0064_3.3.10_6-byte_sequence_with_last_byte_missing__U-7FFFFFFF_:_"?"______| |
206 | 0065_3.4__Concatenation_of_incomplete_sequences___________________________| |
207 | 0066____"??????????"______________________________________________________| |
208 | 0067_3.5__Impossible_bytes________________________________________________| |
209 | 0068_3.5.1__fe_=_"?"______________________________________________________| |
210 | 0069_3.5.2__ff_=_"?"______________________________________________________| |
211 | 0070_3.5.3__fe_fe_ff_ff_=_"????"__________________________________________| |
212 | 0071_4__Overlong_sequences________________________________________________| |
213 | 0072_4.1__Examples_of_an_overlong_ASCII_character_________________________| |
214 | 0073_4.1.1_U+002F_=_c0_af_____________=_"?"_______________________________| |
215 | 0074_4.1.2_U+002F_=_e0_80_af__________=_"?"_______________________________| |
216 | 0075_4.1.3_U+002F_=_f0_80_80_af_______=_"?"_______________________________| |
217 | 0076_4.1.4_U+002F_=_f8_80_80_80_af____=_"?"_______________________________| |
218 | 0077_4.1.5_U+002F_=_fc_80_80_80_80_af_=_"?"_______________________________| |
219 | 0078_4.2__Maximum_overlong_sequences______________________________________| |
220 | 0079_4.2.1__U-0000007F_=_c1_bf_____________=_"?"__________________________| |
221 | 0080_4.2.2__U-000007FF_=_e0_9f_bf__________=_"?"__________________________| |
222 | 0081_4.2.3__U-0000FFFF_=_f0_8f_bf_bf_______=_"?"__________________________| |
223 | 0082_4.2.4__U-001FFFFF_=_f8_87_bf_bf_bf____=_"?"__________________________| |
224 | 0083_4.2.5__U-03FFFFFF_=_fc_83_bf_bf_bf_bf_=_"?"__________________________| |
225 | 0084_4.3__Overlong_representation_of_the_NUL_character____________________| |
226 | 0085_4.3.1__U+0000_=_c0_80_____________=_"?"______________________________| |
227 | 0086_4.3.2__U+0000_=_e0_80_80__________=_"?"______________________________| |
228 | 0087_4.3.3__U+0000_=_f0_80_80_80_______=_"?"______________________________| |
229 | 0088_4.3.4__U+0000_=_f8_80_80_80_80____=_"?"______________________________| |
230 | 0089_4.3.5__U+0000_=_fc_80_80_80_80_80_=_"?"______________________________| |
231 | 0090_5__Illegal_code_positions____________________________________________| |
232 | 0091_5.1_Single_UTF-16_surrogates_________________________________________| |
233 | 0092_5.1.1__U+D800_=_ed_a0_80_=_"?"_______________________________________| |
234 | 0093_5.1.2__U+DB7F_=_ed_ad_bf_=_"?"_______________________________________| |
235 | 0094_5.1.3__U+DB80_=_ed_ae_80_=_"?"_______________________________________| |
236 | 0095_5.1.4__U+DBFF_=_ed_af_bf_=_"?"_______________________________________| |
237 | 0096_5.1.5__U+DC00_=_ed_b0_80_=_"?"_______________________________________| |
238 | 0097_5.1.6__U+DF80_=_ed_be_80_=_"?"_______________________________________| |
239 | 0098_5.1.7__U+DFFF_=_ed_bf_bf_=_"?"_______________________________________| |
240 | 0099_5.2_Paired_UTF-16_surrogates_________________________________________| |
241 | 0100_5.2.1__U+D800_U+DC00_=_ed_a0_80_ed_b0_80_=_"??"______________________| |
242 | 0101_5.2.2__U+D800_U+DFFF_=_ed_a0_80_ed_bf_bf_=_"??"______________________| |
243 | 0102_5.2.3__U+DB7F_U+DC00_=_ed_ad_bf_ed_b0_80_=_"??"______________________| |
244 | 0103_5.2.4__U+DB7F_U+DFFF_=_ed_ad_bf_ed_bf_bf_=_"??"______________________| |
245 | 0104_5.2.5__U+DB80_U+DC00_=_ed_ae_80_ed_b0_80_=_"??"______________________| |
246 | 0105_5.2.6__U+DB80_U+DFFF_=_ed_ae_80_ed_bf_bf_=_"??"______________________| |
247 | 0106_5.2.7__U+DBFF_U+DC00_=_ed_af_bf_ed_b0_80_=_"??"______________________| |
248 | 0107_5.2.8__U+DBFF_U+DFFF_=_ed_af_bf_ed_bf_bf_=_"??"______________________| |
249 | 0108_5.3_Other_illegal_code_positions_____________________________________| |
250 | 0109_5.3.1__U+FFFE_=_ef_bf_be_=_"?"_______________________________________| |
251 | 0110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________| |
252 | ' "" "" |
253 | |
254 | rm -rf ls.testdir 2>/dev/null |
255 | mkdir ls.testdir || exit 1 |
256 | |
257 | # testing "test name" "command" "expected result" "file input" "stdin" |
258 | |
259 | test x"$CONFIG_FEATURE_LS_SORTFILES" = x"y" \ |
260 | && testing "ls symlink_to_dir" \ |
261 | "touch ls.testdir/A ls.testdir/B; ln -s ls.testdir ls.link; ls ls.link; ls -1 ls.link/; ls -1 ls.link; rm -f ls.link" \ |
262 | "A\nB\nA\nB\nA\nB\n" \ |
263 | "" "" |
264 | |
265 | # Clean up |
266 | rm -rf ls.testdir 2>/dev/null |
267 | |
268 | exit $FAILCOUNT |
269 |