This adds 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.
>From 02f1daa1e7dc80a544b7904d1d9d9841e02e3d8b Mon Sep 17 00:00:00 2001 From: Jim Meyering <[email protected]> Date: Sun, 3 Jun 2012 16:29:59 +0200 Subject: [PATCH] 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. --- tests/Makefile.am | 1 + tests/dfa-coverage | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100755 tests/dfa-coverage diff --git a/tests/Makefile.am b/tests/Makefile.am index 167e318..388d48a 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 0000000..3b4e7ed --- /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 -- 1.7.11.rc2
