diff options
Diffstat (limited to 'src/grep/tests/fmbtest')
-rwxr-xr-x | src/grep/tests/fmbtest | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/grep/tests/fmbtest b/src/grep/tests/fmbtest new file mode 100755 index 0000000..5fada35 --- /dev/null +++ b/src/grep/tests/fmbtest @@ -0,0 +1,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 |