diff options
author | Jim Meyering <meyering@redhat.com> | 2012-06-03 16:29:59 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2012-06-08 08:30:47 +0200 |
commit | 02f1daa1e7dc80a544b7904d1d9d9841e02e3d8b (patch) | |
tree | ec717e383a837205decf19d5e7923982fefae264 | |
parent | 1e65a88a9ebbb4db7cd17fea8382e22c136e2688 (diff) | |
download | grep-02f1daa1e7dc80a544b7904d1d9d9841e02e3d8b.tar.gz |
tests: extend coverage of dfa.c's match_mb_charset
Add a test case to increase test coverage of part of dfa.c (the DFA
matcher used by grep and gawk). While thinking about removing the few
remaining uses of strncpy in dfa.c, I found that none of the existing
tests covered the 40+ lines of code at the end of match_mb_charset,
so constructed this test case to demonstrate that it's not dead code
* tests/dfa-coverage: New test, for improved coverage.
* tests/Makefile.am (TESTS): Add it.
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rwxr-xr-x | tests/dfa-coverage | 32 |
2 files changed, 33 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 167e3186..388d48af 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -47,6 +47,7 @@ TESTS = \ case-fold-char-range \ case-fold-char-type \ char-class-multibyte \ + dfa-coverage \ dfa-heap-overrun \ dfaexec-multibyte \ empty \ diff --git a/tests/dfa-coverage b/tests/dfa-coverage new file mode 100755 index 00000000..3b4e7ed3 --- /dev/null +++ b/tests/dfa-coverage @@ -0,0 +1,32 @@ +#!/bin/sh +# Exercise the final reachable code in dfa.c's match_mb_charset. + +# Copyright (C) 2012 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_en_utf8_locale_ +require_compiled_in_MB_support + +fail=0 + +echo a > in || framework_failure_ + +LC_ALL=en_US.UTF-8 grep -E '[^_]|$' in > out || fail=1 + +compare out in || fail=1 + +Exit $fail |