blob: 5fada3500c4b011f773213da9eed5d51451ecf66 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
#! /bin/sh
# Copyright (C) 2001, 2006, 2009-2021 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.
. "${srcdir=.}/init.sh"; path_prepend_ ../src
cz=cs_CZ.UTF-8
# If cs_CZ.UTF-8 locale doesn't work, skip this test.
LC_ALL=$cz locale -k LC_CTYPE 2>/dev/null | grep -q charmap.*UTF-8 \
|| skip_ this system lacks the $cz locale
# If matching is done in single-byte mode, skip this test too
printf 'é\n' | LC_ALL=$cz grep -Eq '^[é]{2}$'
case $? in
0) skip_ "built without multi-byte support";;
1) ;;
*) fail_ "unexpected exit status: $?";;
esac
failures=0
cat > csinput <<EOF
01 Žluťoučká číše
ČíŠE 02
03 Z číší Čiší cosi
04 Čí
Še 05
06 ČČČČČČČíšČÍŠčíš
07 ČČČ ČČČČíšČÍŠčíšEEEE
čAs 08
09Čapka
10ČaSy se měnÍ
ČÍšE11
Čas12
𝇕ČÍšE𝇓13
ŽČÍšE𝇓14
𝇕ČÍšEŽ15
ŽČÍšEŽ16
ČÍšE𝇓17
ČÍšEŽ18
19𝇕ČÍše
20ŽČÍše
EOF
cat > cspatfile <<EOF
ČÍšE
Čas
EOF
for mode in F G E; do
test1=$(echo $(LC_ALL=$cz grep -${mode} -f cspatfile csinput |
tr -cs '0-9' '[ *]'))
if test "$test1" != "11 12 13 14 15 16 17 18"; then
echo "Test #1 ${mode} failed: $test1"
failures=1
fi
test2=$(echo $(LC_ALL=$cz grep -${mode}i -f cspatfile csinput |
tr -cs '0-9' '[ *]'))
if test "$test2" != "01 02 07 08 10 11 12 13 14 15 16 17 18 19 20"; then
echo "Test #2 ${mode} failed: $test2"
failures=1
fi
test3=$(echo $(LC_ALL=$cz grep -${mode}i -e 'ČÍšE' -e 'Čas' csinput |
tr -cs '0-9' '[ *]'))
if test "$test3" != "01 02 07 08 10 11 12 13 14 15 16 17 18 19 20"; then
echo "Test #3 ${mode} failed: $test3"
failures=1
fi
# Skip the next test - known to fail. TAA.
#test4=$(echo $(LC_ALL=$cz; export LC_ALL
# grep -${mode}iw -f cspatfile csinput |
# sed 's/[^0123456789]/ /g'))
#if test "$test4" != "01 02 08 13 17 19"; then
# echo "Test #4 ${mode} failed: $test4"
# failures=1
#fi
# Test that --color=always does not depend on individual pattern order
# within the pattern list, and that a longer match is preferred to a
# shorter one starting at the same point.
test6="$(echo 'Cosi tu ČišÍ...' \
| LC_ALL=$cz grep --color=always -${mode}i -e 'čiš' -e 'čiší')"
if echo "$test6" \
| LC_ALL=C grep -q 'Cosi tu .*\[.*m\(.\[K\)\?ČišÍ.*\[.*m\(.\[K\)\?\.\.\.'; \
then
:
else
echo "Test #6 ${mode} failed: $test6"
failures=1
fi
# Test that --color=always does not depend on individual pattern order
# within the pattern list, and that a longer match is preferred to a
# shorter one starting at the same point.
test7="$(echo 'Cosi tu ČišÍ...' \
| LC_ALL=$cz grep --color=always -${mode}i -e 'čiší' -e 'čiš')"
if echo "$test7" \
| LC_ALL=C grep -q 'Cosi tu .*\[.*m\(.\[K\)\?ČišÍ.*\[.*m\(.\[K\)\?\.\.\.'; \
then
:
else
echo "Test #7 ${mode} failed: $test7"
failures=1
fi
done
for mode in G E; do
test8=$(echo $(LC_ALL=$cz grep -${mode}i -e 'Č.šE' -e 'Č[a-f]s' csinput |
tr -cs '0-9' '[ *]'))
if test "$test8" != "01 02 07 08 10 11 12 13 14 15 16 17 18 19 20"; then
echo "Test #8 ${mode} failed: $test8"
failures=1
fi
done
Exit $failures
|