summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2010-03-14 15:33:58 +0100
committerPaolo Bonzini <bonzini@gnu.org>2010-03-15 15:20:17 +0100
commitf86dac527954cc4c2d86b05ab1481e7c8f26f286 (patch)
treed9edd185ee1c611dae86fc14941c480c4728ce59 /tests
parent459663d87b9dc0af768857ae1c01e6156c58c2e2 (diff)
downloadgrep-f86dac527954cc4c2d86b05ab1481e7c8f26f286.tar.gz
dfa: fix handling of ranges in multibyte character sets
* src/dfa.c (parse_bracket_exp_mb): Add separate ranges for lowercase and uppercase endpoints if folding case. * tests/Makefile.am (TESTS): Add case-fold-char-range. * tests/case-fold-char-range: New.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/case-fold-char-range22
2 files changed, 23 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b71b2ee4..6a56dcff 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -18,6 +18,7 @@ TESTS = \
backref.sh \
bre.sh \
case-fold-char-class \
+ case-fold-char-range \
case-fold-char-type \
dfaexec-multibyte \
empty.sh \
diff --git a/tests/case-fold-char-range b/tests/case-fold-char-range
new file mode 100644
index 00000000..9b3120fb
--- /dev/null
+++ b/tests/case-fold-char-range
@@ -0,0 +1,22 @@
+#!/bin/sh
+# This would fail for grep-2.5.3
+: ${srcdir=.}
+. "$srcdir/init.sh"; path_prepend_ ../src
+
+printf 'A\nZ\n' > exp1 || framework_failure
+fail=0
+
+for LOC in en_US.UTF-8 zh_CN $LOCALE_FR_UTF8; do
+ printf 'A\n1\nZ\n.\n' | LC_ALL=$LOC grep -i '[a-z]' > out1 || fail=1
+ compare out1 exp1 || fail=1
+done
+
+# This actually passes also for grep-2.5.3
+printf 'a\nz\n' > exp2 || framework_failure
+
+for LOC in en_US.UTF-8 zh_CN $LOCALE_FR_UTF8; do
+ printf 'a\n1\nz\n.\n' | LC_ALL=$LOC grep -i '[A-Z]' > out2 || fail=1
+ compare out2 exp2 || fail=1
+done
+
+Exit $fail