From db7eee77619929c87cae9997efb1e8ff101ea580 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 14 Jan 2023 16:47:41 -0800 Subject: [PATCH] test-framework-sh: work around AIX 7.2 diff bugs MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * tests/init.sh (compare_dev_null_): Run diff in the C locale. AIX 7.2 diff messes up in UTF-8 locales; for example, ‘printf '\360\220\200\200\n' | diff - /dev/null’ incorrectly outputs nothing and exits with status 0 when LC_ALL=en_US.UTF-8. --- ChangeLog | 8 ++++++++ tests/init.sh | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05c0d3db0b..c4257fe810 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2023-01-14 Paul Eggert + + test-framework-sh: work around AIX 7.2 diff bugs + * tests/init.sh (compare_dev_null_): Run diff in the C locale. + AIX 7.2 diff messes up in UTF-8 locales; for example, + ‘printf '\360\220\200\200\n' | diff - /dev/null’ incorrectly + outputs nothing and exits with status 0 when LC_ALL=en_US.UTF-8. + 2023-01-13 Paul Eggert verify: work around xlclang 16.1 compiler bug diff --git a/tests/init.sh b/tests/init.sh index 6c09392867..0494097e9f 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -646,18 +646,19 @@ compare_dev_null_ () for diff_opt_ in -u -U3 -c '' no; do test "$diff_opt_" != no && - diff_out_=`exec 2>/dev/null; diff $diff_opt_ "$0" "$0" < /dev/null` && + diff_out_=`exec 2>/dev/null + LC_ALL=C diff $diff_opt_ "$0" "$0" < /dev/null` && break done if test "$diff_opt_" != no; then if test -z "$diff_out_"; then - compare_ () { diff $diff_opt_ "$@"; } + compare_ () { LC_ALL=C diff $diff_opt_ "$@"; } else compare_ () { # If no differences were found, AIX and HP-UX 'diff' produce output # like "No differences encountered". Hide this output. - diff $diff_opt_ "$@" > diff.out + LC_ALL=C diff $diff_opt_ "$@" > diff.out diff_status_=$? test $diff_status_ -eq 0 || cat diff.out || diff_status_=2 rm -f diff.out || diff_status_=2 -- 2.39.5