1#!/bin/sh
2# Copyright 2010 by Denys Vlasenko
3# Licensed under GPLv2, see file LICENSE in this source tree.
4
5. ./testing.sh
6test -f "$bindir/.config" && . "$bindir/.config"
7
8rm -rf ls.testdir 2>/dev/null
9mkdir 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.
16test 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___________________________________________|
240002_2__Boundary_condition_test_cases_____________________________________|
250003_2.1__First_possible_sequence_of_a_certain_length_____________________|
260004_2.1.2__2_bytes__U-00000080_:________"?"______________________________|
270005_2.1.3__3_bytes__U-00000800_:________"?"______________________________|
280006_2.1.4__4_bytes__U-00010000_:________"?"______________________________|
290007_2.1.5__5_bytes__U-00200000_:________"?"______________________________|
300008_2.1.6__6_bytes__U-04000000_:________"?"______________________________|
310009_2.2__Last_possible_sequence_of_a_certain_length______________________|
320010_2.2.1__1_byte___U-0000007F_:________"?"______________________________|
330011_2.2.2__2_bytes__U-000007FF_:________"?"______________________________|
340012_2.2.3__3_bytes__U-0000FFFF_:________"?"______________________________|
350013_2.2.4__4_bytes__U-001FFFFF_:________"?"______________________________|
360014_2.2.5__5_bytes__U-03FFFFFF_:________"?"______________________________|
370015_2.2.6__6_bytes__U-7FFFFFFF_:________"?"______________________________|
380016_2.3__Other_boundary_conditions_______________________________________|
390017_2.3.1__U-0000D7FF_=_ed_9f_bf_=_"?"___________________________________|
400018_2.3.2__U-0000E000_=_ee_80_80_=_"?"___________________________________|
410019_2.3.3__U-0000FFFD_=_ef_bf_bd_=_"?"___________________________________|
420020_2.3.4__U-0010FFFF_=_f4_8f_bf_bf_=_"?"________________________________|
430021_2.3.5__U-00110000_=_f4_90_80_80_=_"?"________________________________|
440022_3__Malformed_sequences_______________________________________________|
450023_3.1__Unexpected_continuation_bytes___________________________________|
460024_3.1.1__First_continuation_byte_0x80:_"?"_____________________________|
470025_3.1.2__Last__continuation_byte_0xbf:_"?"_____________________________|
480026_3.1.3__2_continuation_bytes:_"??"____________________________________|
490027_3.1.4__3_continuation_bytes:_"???"___________________________________|
500028_3.1.5__4_continuation_bytes:_"????"__________________________________|
510029_3.1.6__5_continuation_bytes:_"?????"_________________________________|
520030_3.1.7__6_continuation_bytes:_"??????"________________________________|
530031_3.1.8__7_continuation_bytes:_"???????"_______________________________|
540032_3.1.9__Sequence_of_all_64_possible_continuation_bytes__0x80-0xbf_:___|
550033____"????????????????_________________________________________________|
560034_____????????????????_________________________________________________|
570035_____????????????????_________________________________________________|
580036_____????????????????"________________________________________________|
590037_3.2__Lonely_start_characters_________________________________________|
600038_3.2.1__All_32_first_bytes_of_2-byte_sequences__0xc0-0xdf_,___________|
610039________each_followed_by_a_space_character:___________________________|
620040____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?__________________________________|
630041_____?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
640042_3.2.2__All_16_first_bytes_of_3-byte_sequences__0xe0-0xef_,___________|
650043________each_followed_by_a_space_character:___________________________|
660044____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
670045_3.2.3__All_8_first_bytes_of_4-byte_sequences__0xf0-0xf7_,____________|
680046________each_followed_by_a_space_character:___________________________|
690047____"?_?_?_?_?_?_?_?_"________________________________________________|
700048_3.2.4__All_4_first_bytes_of_5-byte_sequences__0xf8-0xfb_,____________|
710049________each_followed_by_a_space_character:___________________________|
720050____"?_?_?_?_"________________________________________________________|
730051_3.2.5__All_2_first_bytes_of_6-byte_sequences__0xfc-0xfd_,____________|
740052________each_followed_by_a_space_character:___________________________|
750053____"?_?_"____________________________________________________________|
760054_3.3__Sequences_with_last_continuation_byte_missing___________________|
770055_3.3.1__2-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
780056_3.3.2__3-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
790057_3.3.3__4-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
800058_3.3.4__5-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
810059_3.3.5__6-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
820060_3.3.6__2-byte_sequence_with_last_byte_missing__U-000007FF_:_"?"______|
830061_3.3.7__3-byte_sequence_with_last_byte_missing__U-0000FFFF_:_"?"______|
840062_3.3.8__4-byte_sequence_with_last_byte_missing__U-001FFFFF_:_"?"______|
850063_3.3.9__5-byte_sequence_with_last_byte_missing__U-03FFFFFF_:_"?"______|
860064_3.3.10_6-byte_sequence_with_last_byte_missing__U-7FFFFFFF_:_"?"______|
870065_3.4__Concatenation_of_incomplete_sequences___________________________|
880066____"??????????"______________________________________________________|
890067_3.5__Impossible_bytes________________________________________________|
900068_3.5.1__fe_=_"?"______________________________________________________|
910069_3.5.2__ff_=_"?"______________________________________________________|
920070_3.5.3__fe_fe_ff_ff_=_"????"__________________________________________|
930071_4__Overlong_sequences________________________________________________|
940072_4.1__Examples_of_an_overlong_ASCII_character_________________________|
950073_4.1.1_U+002F_=_c0_af_____________=_"?"_______________________________|
960074_4.1.2_U+002F_=_e0_80_af__________=_"?"_______________________________|
970075_4.1.3_U+002F_=_f0_80_80_af_______=_"?"_______________________________|
980076_4.1.4_U+002F_=_f8_80_80_80_af____=_"?"_______________________________|
990077_4.1.5_U+002F_=_fc_80_80_80_80_af_=_"?"_______________________________|
1000078_4.2__Maximum_overlong_sequences______________________________________|
1010079_4.2.1__U-0000007F_=_c1_bf_____________=_"?"__________________________|
1020080_4.2.2__U-000007FF_=_e0_9f_bf__________=_"?"__________________________|
1030081_4.2.3__U-0000FFFF_=_f0_8f_bf_bf_______=_"?"__________________________|
1040082_4.2.4__U-001FFFFF_=_f8_87_bf_bf_bf____=_"?"__________________________|
1050083_4.2.5__U-03FFFFFF_=_fc_83_bf_bf_bf_bf_=_"?"__________________________|
1060084_4.3__Overlong_representation_of_the_NUL_character____________________|
1070085_4.3.1__U+0000_=_c0_80_____________=_"?"______________________________|
1080086_4.3.2__U+0000_=_e0_80_80__________=_"?"______________________________|
1090087_4.3.3__U+0000_=_f0_80_80_80_______=_"?"______________________________|
1100088_4.3.4__U+0000_=_f8_80_80_80_80____=_"?"______________________________|
1110089_4.3.5__U+0000_=_fc_80_80_80_80_80_=_"?"______________________________|
1120090_5__Illegal_code_positions____________________________________________|
1130091_5.1_Single_UTF-16_surrogates_________________________________________|
1140092_5.1.1__U+D800_=_ed_a0_80_=_"?"_______________________________________|
1150093_5.1.2__U+DB7F_=_ed_ad_bf_=_"?"_______________________________________|
1160094_5.1.3__U+DB80_=_ed_ae_80_=_"?"_______________________________________|
1170095_5.1.4__U+DBFF_=_ed_af_bf_=_"?"_______________________________________|
1180096_5.1.5__U+DC00_=_ed_b0_80_=_"?"_______________________________________|
1190097_5.1.6__U+DF80_=_ed_be_80_=_"?"_______________________________________|
1200098_5.1.7__U+DFFF_=_ed_bf_bf_=_"?"_______________________________________|
1210099_5.2_Paired_UTF-16_surrogates_________________________________________|
1220100_5.2.1__U+D800_U+DC00_=_ed_a0_80_ed_b0_80_=_"??"______________________|
1230101_5.2.2__U+D800_U+DFFF_=_ed_a0_80_ed_bf_bf_=_"??"______________________|
1240102_5.2.3__U+DB7F_U+DC00_=_ed_ad_bf_ed_b0_80_=_"??"______________________|
1250103_5.2.4__U+DB7F_U+DFFF_=_ed_ad_bf_ed_bf_bf_=_"??"______________________|
1260104_5.2.5__U+DB80_U+DC00_=_ed_ae_80_ed_b0_80_=_"??"______________________|
1270105_5.2.6__U+DB80_U+DFFF_=_ed_ae_80_ed_bf_bf_=_"??"______________________|
1280106_5.2.7__U+DBFF_U+DC00_=_ed_af_bf_ed_b0_80_=_"??"______________________|
1290107_5.2.8__U+DBFF_U+DFFF_=_ed_af_bf_ed_bf_bf_=_"??"______________________|
1300108_5.3_Other_illegal_code_positions_____________________________________|
1310109_5.3.1__U+FFFE_=_ef_bf_be_=_"?"_______________________________________|
1320110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________|
133' "" ""
134
135# Currently fails on "0080_4.2.2__U-000007FF_=_e0_9f_bf" line
136test 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___________________________________________|
1430002_2__Boundary_condition_test_cases_____________________________________|
1440003_2.1__First_possible_sequence_of_a_certain_length_____________________|
1450004_2.1.2__2_bytes__U-00000080_:________"?"______________________________|
1460005_2.1.3__3_bytes__U-00000800_:________"ࠀ"______________________________|
1470006_2.1.4__4_bytes__U-00010000_:________"��"______________________________|
1480007_2.1.5__5_bytes__U-00200000_:________"?"______________________________|
1490008_2.1.6__6_bytes__U-04000000_:________"?"______________________________|
1500009_2.2__Last_possible_sequence_of_a_certain_length______________________|
1510010_2.2.1__1_byte___U-0000007F_:________"?"______________________________|
1520011_2.2.2__2_bytes__U-000007FF_:________"߿"______________________________|
1530012_2.2.3__3_bytes__U-0000FFFF_:________"?"______________________________|
1540013_2.2.4__4_bytes__U-001FFFFF_:________"?"______________________________|
1550014_2.2.5__5_bytes__U-03FFFFFF_:________"?"______________________________|
1560015_2.2.6__6_bytes__U-7FFFFFFF_:________"?"______________________________|
1570016_2.3__Other_boundary_conditions_______________________________________|
1580017_2.3.1__U-0000D7FF_=_ed_9f_bf_=_"퟿"___________________________________|
1590018_2.3.2__U-0000E000_=_ee_80_80_=_"?"___________________________________|
1600019_2.3.3__U-0000FFFD_=_ef_bf_bd_=_"�"___________________________________|
1610020_2.3.4__U-0010FFFF_=_f4_8f_bf_bf_=_"?"________________________________|
1620021_2.3.5__U-00110000_=_f4_90_80_80_=_"?"________________________________|
1630022_3__Malformed_sequences_______________________________________________|
1640023_3.1__Unexpected_continuation_bytes___________________________________|
1650024_3.1.1__First_continuation_byte_0x80:_"?"_____________________________|
1660025_3.1.2__Last__continuation_byte_0xbf:_"?"_____________________________|
1670026_3.1.3__2_continuation_bytes:_"??"____________________________________|
1680027_3.1.4__3_continuation_bytes:_"???"___________________________________|
1690028_3.1.5__4_continuation_bytes:_"????"__________________________________|
1700029_3.1.6__5_continuation_bytes:_"?????"_________________________________|
1710030_3.1.7__6_continuation_bytes:_"??????"________________________________|
1720031_3.1.8__7_continuation_bytes:_"???????"_______________________________|
1730032_3.1.9__Sequence_of_all_64_possible_continuation_bytes__0x80-0xbf_:___|
1740033____"????????????????_________________________________________________|
1750034_____????????????????_________________________________________________|
1760035_____????????????????_________________________________________________|
1770036_____????????????????"________________________________________________|
1780037_3.2__Lonely_start_characters_________________________________________|
1790038_3.2.1__All_32_first_bytes_of_2-byte_sequences__0xc0-0xdf_,___________|
1800039________each_followed_by_a_space_character:___________________________|
1810040____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?__________________________________|
1820041_____?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
1830042_3.2.2__All_16_first_bytes_of_3-byte_sequences__0xe0-0xef_,___________|
1840043________each_followed_by_a_space_character:___________________________|
1850044____"?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_?_"________________________________|
1860045_3.2.3__All_8_first_bytes_of_4-byte_sequences__0xf0-0xf7_,____________|
1870046________each_followed_by_a_space_character:___________________________|
1880047____"?_?_?_?_?_?_?_?_"________________________________________________|
1890048_3.2.4__All_4_first_bytes_of_5-byte_sequences__0xf8-0xfb_,____________|
1900049________each_followed_by_a_space_character:___________________________|
1910050____"?_?_?_?_"________________________________________________________|
1920051_3.2.5__All_2_first_bytes_of_6-byte_sequences__0xfc-0xfd_,____________|
1930052________each_followed_by_a_space_character:___________________________|
1940053____"?_?_"____________________________________________________________|
1950054_3.3__Sequences_with_last_continuation_byte_missing___________________|
1960055_3.3.1__2-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
1970056_3.3.2__3-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
1980057_3.3.3__4-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
1990058_3.3.4__5-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
2000059_3.3.5__6-byte_sequence_with_last_byte_missing__U+0000_:_____"?"______|
2010060_3.3.6__2-byte_sequence_with_last_byte_missing__U-000007FF_:_"?"______|
2020061_3.3.7__3-byte_sequence_with_last_byte_missing__U-0000FFFF_:_"?"______|
2030062_3.3.8__4-byte_sequence_with_last_byte_missing__U-001FFFFF_:_"?"______|
2040063_3.3.9__5-byte_sequence_with_last_byte_missing__U-03FFFFFF_:_"?"______|
2050064_3.3.10_6-byte_sequence_with_last_byte_missing__U-7FFFFFFF_:_"?"______|
2060065_3.4__Concatenation_of_incomplete_sequences___________________________|
2070066____"??????????"______________________________________________________|
2080067_3.5__Impossible_bytes________________________________________________|
2090068_3.5.1__fe_=_"?"______________________________________________________|
2100069_3.5.2__ff_=_"?"______________________________________________________|
2110070_3.5.3__fe_fe_ff_ff_=_"????"__________________________________________|
2120071_4__Overlong_sequences________________________________________________|
2130072_4.1__Examples_of_an_overlong_ASCII_character_________________________|
2140073_4.1.1_U+002F_=_c0_af_____________=_"?"_______________________________|
2150074_4.1.2_U+002F_=_e0_80_af__________=_"?"_______________________________|
2160075_4.1.3_U+002F_=_f0_80_80_af_______=_"?"_______________________________|
2170076_4.1.4_U+002F_=_f8_80_80_80_af____=_"?"_______________________________|
2180077_4.1.5_U+002F_=_fc_80_80_80_80_af_=_"?"_______________________________|
2190078_4.2__Maximum_overlong_sequences______________________________________|
2200079_4.2.1__U-0000007F_=_c1_bf_____________=_"?"__________________________|
2210080_4.2.2__U-000007FF_=_e0_9f_bf__________=_"?"__________________________|
2220081_4.2.3__U-0000FFFF_=_f0_8f_bf_bf_______=_"?"__________________________|
2230082_4.2.4__U-001FFFFF_=_f8_87_bf_bf_bf____=_"?"__________________________|
2240083_4.2.5__U-03FFFFFF_=_fc_83_bf_bf_bf_bf_=_"?"__________________________|
2250084_4.3__Overlong_representation_of_the_NUL_character____________________|
2260085_4.3.1__U+0000_=_c0_80_____________=_"?"______________________________|
2270086_4.3.2__U+0000_=_e0_80_80__________=_"?"______________________________|
2280087_4.3.3__U+0000_=_f0_80_80_80_______=_"?"______________________________|
2290088_4.3.4__U+0000_=_f8_80_80_80_80____=_"?"______________________________|
2300089_4.3.5__U+0000_=_fc_80_80_80_80_80_=_"?"______________________________|
2310090_5__Illegal_code_positions____________________________________________|
2320091_5.1_Single_UTF-16_surrogates_________________________________________|
2330092_5.1.1__U+D800_=_ed_a0_80_=_"?"_______________________________________|
2340093_5.1.2__U+DB7F_=_ed_ad_bf_=_"?"_______________________________________|
2350094_5.1.3__U+DB80_=_ed_ae_80_=_"?"_______________________________________|
2360095_5.1.4__U+DBFF_=_ed_af_bf_=_"?"_______________________________________|
2370096_5.1.5__U+DC00_=_ed_b0_80_=_"?"_______________________________________|
2380097_5.1.6__U+DF80_=_ed_be_80_=_"?"_______________________________________|
2390098_5.1.7__U+DFFF_=_ed_bf_bf_=_"?"_______________________________________|
2400099_5.2_Paired_UTF-16_surrogates_________________________________________|
2410100_5.2.1__U+D800_U+DC00_=_ed_a0_80_ed_b0_80_=_"??"______________________|
2420101_5.2.2__U+D800_U+DFFF_=_ed_a0_80_ed_bf_bf_=_"??"______________________|
2430102_5.2.3__U+DB7F_U+DC00_=_ed_ad_bf_ed_b0_80_=_"??"______________________|
2440103_5.2.4__U+DB7F_U+DFFF_=_ed_ad_bf_ed_bf_bf_=_"??"______________________|
2450104_5.2.5__U+DB80_U+DC00_=_ed_ae_80_ed_b0_80_=_"??"______________________|
2460105_5.2.6__U+DB80_U+DFFF_=_ed_ae_80_ed_bf_bf_=_"??"______________________|
2470106_5.2.7__U+DBFF_U+DC00_=_ed_af_bf_ed_b0_80_=_"??"______________________|
2480107_5.2.8__U+DBFF_U+DFFF_=_ed_af_bf_ed_bf_bf_=_"??"______________________|
2490108_5.3_Other_illegal_code_positions_____________________________________|
2500109_5.3.1__U+FFFE_=_ef_bf_be_=_"?"_______________________________________|
2510110_5.3.2__U+FFFF_=_ef_bf_bf_=_"?"_______________________________________|
252' "" ""
253
254rm -rf ls.testdir 2>/dev/null
255mkdir ls.testdir || exit 1
256
257# testing "test name" "command" "expected result" "file input" "stdin"
258
259test 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
266rm -rf ls.testdir 2>/dev/null
267
268exit $FAILCOUNT
269