summaryrefslogtreecommitdiff
path: root/tests/posix-bracket
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2014-02-27 09:26:23 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2014-02-27 09:29:09 -0800
commit8b16e90a248d70aef687931370f8ef7c1f2bc4ef (patch)
tree4e2a6cd5988c2469b969f6ee1f784f18cbb82fa5 /tests/posix-bracket
parent0b5003dd7c485bceba81cf8ffa901f3646c2417d (diff)
downloadgrep-8b16e90a248d70aef687931370f8ef7c1f2bc4ef.tar.gz
grep: fix multiple bugs with bracket expressions
* NEWS: Document this. * src/dfa.c (using_simple_locale): New function. (parse_bracket_exp): Handle bracket expressions like [a-[.z.]] correctly. Don't assume that dfaexec handles expressions like [^a-z] correctly, as they can match multiple characters in some locales. * tests/posix-bracket: New file. * tests/Makefile.am (TESTS): Add it.
Diffstat (limited to 'tests/posix-bracket')
-rwxr-xr-xtests/posix-bracket33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/posix-bracket b/tests/posix-bracket
new file mode 100755
index 00000000..d9d1d845
--- /dev/null
+++ b/tests/posix-bracket
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Check various bracket expressions in the POSIX locale.
+
+# 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
+LC_ALL=C
+export LC_ALL
+
+fail=0
+
+echo a >in || framework_failure_
+for bracketed in '[.a.]' '[.a.]-a' 'a-[.a.]' '[.a.]-[.a.]' \
+ '[=a=]' '[:alpha:]'; do
+ grep "[$bracketed]" in >out || fail=1
+ compare in out || fail=1
+ grep "[^$bracketed]" in >out && fail=1
+ compare /dev/null out || fail=1
+done
+Exit $fail