From 24fb014092ba8d831c25cd8757a6a738927bb743 Mon Sep 17 00:00:00 2001 From: Collin Funk Date: Thu, 4 Sep 2025 19:30:00 -0700 Subject: [PATCH] tests: fold: check if multi-byte spaces are treated as blank MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This avoids a test failure on FreeBSD 14, MacOS 15, and musl. Fix suggested by Pádraig Brady in: . * tests/fold/fold-spaces.sh (isblank): New function. Only run the tests if the character is treated as blank. Fixes https://bugs.gnu.org/79301 --- tests/fold/fold-spaces.sh | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/tests/fold/fold-spaces.sh b/tests/fold/fold-spaces.sh index 9ea95bf029..e30a2bcbb4 100755 --- a/tests/fold/fold-spaces.sh +++ b/tests/fold/fold-spaces.sh @@ -24,18 +24,31 @@ test "$LOCALE_FR_UTF8" != none || skip_ "French UTF-8 locale not available" LC_ALL=$LOCALE_FR_UTF8 export LC_ALL -# One U+2002 EN SPACE characters. -env printf 'abcdefghijklmnop\u2002qrstuvwxyz\n' > input1 || framework_failure_ -env printf 'abcdefghij\nklmnop\u2002\nqrstuvwxyz\n'> exp1 || framework_failure_ -fold --spaces --width 10 input1 > out1 || fail=1 -compare exp1 out1 || fail=1 - -# Two U+2003 EM SPACE characters. -env printf 'abcdefghijklmnop\u2003\u2003qrstuvwxyz\n' > input2 \ - || framework_failure_ -env printf 'abcdefghij\nklmnop\u2003\u2003\nqrstuvwxyz\n'> exp2 \ - || framework_failure_ -fold --spaces --width 10 input2 > out2 || fail=1 -compare exp2 out2 || fail=1 +# Check if a character is considered blank. Some systems, such as FreeBSD, +# only consider ASCII spaces and tabs blank. +isblank () +{ + test $(printf "a$1a\nb$1b\n" | uniq -f1 | wc -l) = 2; +} + +if isblank '\u2002'; then + # One U+2002 EN SPACE characters. + env printf 'abcdefghijklmnop\u2002qrstuvwxyz\n' > input1 \ + || framework_failure_ + env printf 'abcdefghij\nklmnop\u2002\nqrstuvwxyz\n'> exp1 \ + || framework_failure_ + fold --spaces --width 10 input1 > out1 || fail=1 + compare exp1 out1 || fail=1 +fi + +if isblank '\u2003'; then + # Two U+2003 EM SPACE characters. + env printf 'abcdefghijklmnop\u2003\u2003qrstuvwxyz\n' > input2 \ + || framework_failure_ + env printf 'abcdefghij\nklmnop\u2003\u2003\nqrstuvwxyz\n'> exp2 \ + || framework_failure_ + fold --spaces --width 10 input2 > out2 || fail=1 + compare exp2 out2 || fail=1 +fi Exit $fail -- 2.47.3