From: Collin Funk Date: Fri, 5 Sep 2025 02:30:00 +0000 (-0700) Subject: tests: fold: check if multi-byte spaces are treated as blank X-Git-Tag: v9.8~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=24fb014092ba8d831c25cd8757a6a738927bb743;p=thirdparty%2Fcoreutils.git tests: fold: check if multi-byte spaces are treated as blank 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 --- 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