]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: fold: check if multi-byte spaces are treated as blank
authorCollin Funk <collin.funk1@gmail.com>
Fri, 5 Sep 2025 02:30:00 +0000 (19:30 -0700)
committerCollin Funk <collin.funk1@gmail.com>
Fri, 5 Sep 2025 02:48:37 +0000 (19:48 -0700)
This avoids a test failure on FreeBSD 14, MacOS 15, and musl.
Fix suggested by Pádraig Brady in:
<https://bugs.gnu.org/79301#32>.
* 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

index 9ea95bf029228c10e29fdcbbb3c060aa55bc6f09..e30a2bcbb4f77f49e7ab7c6dbc3f248e8488dd18 100755 (executable)
@@ -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