diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-02-19 18:58:42 -0800 |
---|---|---|
committer | Jim Meyering <meyering@fb.com> | 2014-02-20 13:36:09 -0800 |
commit | 1179952ef0728c6f8cb65214fc8be2732c2d27a3 (patch) | |
tree | 4ce03ced283dbf1d578139a8ed762480226fd9e3 | |
parent | ef5a3b579ed478a0755bae6858b02984d3bc1536 (diff) | |
download | grep-1179952ef0728c6f8cb65214fc8be2732c2d27a3.tar.gz |
tests: test [^^-^] in unibyte locales
This is a bug in the current dfa.c, which was reintroduced by the
recent reversion from RRI.
* tests/unibyte-negated-circumflex: New file.
* tests/Makefile.am (TESTS): Add it.
* tests/init.cfg (require_unibyte_locale): New function.
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/init.cfg | 16 | ||||
-rwxr-xr-x | tests/unibyte-negated-circumflex | 27 |
3 files changed, 44 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index e2967fad..331467ab 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -75,6 +75,7 @@ TESTS = \ multibyte-white-space \ empty-line-mb \ unibyte-bracket-expr \ + unibyte-negated-circumflex \ high-bit-range \ options \ pcre \ diff --git a/tests/init.cfg b/tests/init.cfg index 2e8330bf..ee5d537d 100644 --- a/tests/init.cfg +++ b/tests/init.cfg @@ -87,6 +87,22 @@ require_compiled_in_MB_support() || skip_ this test requires MBS support } +require_unibyte_locale() +{ + path_prepend_ . + for loc in C en_US; do + for encoding in '' .iso88591 .iso885915 .ISO8859-1 .ISO8859-15; do + locale=$loc$encoding + MB_CUR_MAX=$(get-mb-cur-max $locale 2>/dev/null) && + test "$MB_CUR_MAX" -eq 1 && + LC_ALL=$locale && + export LC_ALL && + return + done + done + skip_ 'no unibyte locale found' +} + expensive_() { if test "$RUN_EXPENSIVE_TESTS" != yes; then diff --git a/tests/unibyte-negated-circumflex b/tests/unibyte-negated-circumflex new file mode 100755 index 00000000..b6d747c8 --- /dev/null +++ b/tests/unibyte-negated-circumflex @@ -0,0 +1,27 @@ +#!/bin/sh +# Exercise a bug where [^^-^] was treated as if it were [^-^]. + +# Copyright 2014 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +. "${srcdir=.}/init.sh"; path_prepend_ ../src +require_unibyte_locale + +fail=0 + +echo a >in || framework_failure_ +grep '[^^-^]' in >out || fail=1 +compare out in || fail=1 +Exit $fail |