summaryrefslogtreecommitdiffstats
path: root/src/grep/tests/char-class-multibyte
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xsrc/grep/tests/char-class-multibyte30
-rwxr-xr-xsrc/grep/tests/char-class-multibyte219
2 files changed, 49 insertions, 0 deletions
diff --git a/src/grep/tests/char-class-multibyte b/src/grep/tests/char-class-multibyte
new file mode 100755
index 0000000..b957518
--- /dev/null
+++ b/src/grep/tests/char-class-multibyte
@@ -0,0 +1,30 @@
+#!/bin/sh
+# This would segfault for grep-2.6
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
+
+require_en_utf8_locale_
+require_compiled_in_MB_support
+
+printf 'é\n' > exp1 || framework_failure_
+fail=0
+
+for LOC in en_US.UTF-8 $LOCALE_FR_UTF8; do
+ out=out1-$LOC
+ printf 'á\nç\né\n' | LC_ALL=$LOC grep '[é]' > $out || fail=1
+ compare exp1 $out || fail=1
+done
+
+printf 'É\n' > exp2 || framework_failure_
+
+for LOC in en_US.UTF-8 $LOCALE_FR_UTF8; do
+ out=out2-$LOC
+ printf 'Á\nÇ\nÉ\n' | LC_ALL=$LOC grep '[É]' > $out || fail=1
+ compare exp2 $out || fail=1
+done
+
+for LOC in en_US.UTF-8 $LOCALE_FR_UTF8; do
+ out=out3-$LOC
+ printf '\303\n' | returns_ 1 env LC_ALL=$LOC grep '[é]' > $out || fail=1
+done
+
+Exit $fail
diff --git a/src/grep/tests/char-class-multibyte2 b/src/grep/tests/char-class-multibyte2
new file mode 100755
index 0000000..6cdada5
--- /dev/null
+++ b/src/grep/tests/char-class-multibyte2
@@ -0,0 +1,19 @@
+#!/bin/sh
+# This test would segfault for grep-2.14
+. "${srcdir=.}/init.sh"; path_prepend_ ../src
+
+require_en_utf8_locale_
+require_compiled_in_MB_support
+
+e_acute=$(printf '\303\251')
+printf "$e_acute\n" > exp || framework_failure_
+fail=0
+
+for LOC in en_US.UTF-8 $LOCALE_FR_UTF8; do
+ out=out-$LOC
+ printf "á\nç\n$e_acute\n" | LC_ALL=$LOC grep -E "([^.]*[$e_acute]){1,2}" \
+ > $out || fail=1
+ compare exp $out || fail=1
+done
+
+Exit $fail