Blame tests/turkish-I-without-dot

Packit 709fb3
#!/bin/sh
Packit 709fb3
# grep -i would misbehave for any matched line containing a character
Packit 709fb3
# (like "I" in the tr_TR.utf8 locale) whose lower-case representation
Packit 709fb3
# occupies more bytes (two in this case, for 0xc4b1, aka U+0131).
Packit 709fb3
Packit 709fb3
# Copyright (C) 2011-2017 Free Software Foundation, Inc.
Packit 709fb3
Packit 709fb3
# This program is free software: you can redistribute it and/or modify
Packit 709fb3
# it under the terms of the GNU General Public License as published by
Packit 709fb3
# the Free Software Foundation, either version 3 of the License, or
Packit 709fb3
# (at your option) any later version.
Packit 709fb3
Packit 709fb3
# This program is distributed in the hope that it will be useful,
Packit 709fb3
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 709fb3
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 709fb3
# GNU General Public License for more details.
Packit 709fb3
Packit 709fb3
# You should have received a copy of the GNU General Public License
Packit 709fb3
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit 709fb3
Packit 709fb3
. "${srcdir=.}/init.sh"; path_prepend_ ../src
Packit 709fb3
Packit 709fb3
require_tr_utf8_locale_
Packit 709fb3
require_compiled_in_MB_support
Packit 709fb3
Packit 709fb3
# Before this change, grep could print a lot of uninitialized memory:
Packit 709fb3
# $ printf "IIIIIII\n" > in
Packit 709fb3
# $ for i in $(seq 10); do LC_ALL=tr_TR.utf8 src/grep -i . in|wc -c; done
Packit 709fb3
# 760
Packit 709fb3
# 754
Packit 709fb3
# 585
Packit 709fb3
# 298
Packit 709fb3
# 273
Packit 709fb3
# 458
Packit 709fb3
# 660
Packit 709fb3
# 552
Packit 709fb3
# 936
Packit 709fb3
# 678
Packit 709fb3
Packit 709fb3
fail=0
Packit 709fb3
Packit 709fb3
printf "IIIIIII\n" > in || framework_failure_
Packit 709fb3
LC_ALL=tr_TR.utf8 grep -i .... in > out || fail=1
Packit 709fb3
compare out in || fail=1
Packit 709fb3
Packit 709fb3
# Also exercise the case in which the original string and the lower-case
Packit 709fb3
# buffer have precisely the same length (22 bytes here), yet internal
Packit 709fb3
# offsets do differ.  Lengths are the same because while some bytes shrink
Packit 709fb3
# when converted to lower case, others grow, and here they balance out.
Packit 709fb3
i='I\304\260'
Packit 709fb3
printf "$i$i$i$i$i$i$i\n" > in || framework_failure_
Packit 709fb3
LC_ALL=tr_TR.utf8 grep -i .... in > out || fail=1
Packit 709fb3
compare out in || fail=1
Packit 709fb3
Packit 709fb3
Exit $fail