From 38b824ac7e07cb95ee2c5d4d428d84af8372f526 Mon Sep 17 00:00:00 2001 From: =?utf8?q?P=C3=A1draig=20Brady?= Date: Mon, 20 Oct 2025 12:53:13 +0100 Subject: [PATCH] tests: numfmt: add non-utf8 multi-byte test * tests/numfmt/mb-non-utf8.sh: Test GB18030 delimiter search. * tests/local.mk: Reference the new test, and move the existing numfmt.pl test from tests/misc to tests/numfmt. --- tests/local.mk | 3 ++- tests/numfmt/mb-non-utf8.sh | 34 ++++++++++++++++++++++++++++++++ tests/{misc => numfmt}/numfmt.pl | 0 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100755 tests/numfmt/mb-non-utf8.sh rename tests/{misc => numfmt}/numfmt.pl (100%) diff --git a/tests/local.mk b/tests/local.mk index 92b1192833..bd7d602aa4 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -359,7 +359,8 @@ all_tests = \ tests/nproc/nproc-avail.sh \ tests/nproc/nproc-positive.sh \ tests/nproc/nproc-override.sh \ - tests/misc/numfmt.pl \ + tests/numfmt/numfmt.pl \ + tests/numfmt/mb-non-utf8.sh \ tests/misc/option-aliases.sh \ tests/od/od-N.sh \ tests/od/od-j.sh \ diff --git a/tests/numfmt/mb-non-utf8.sh b/tests/numfmt/mb-non-utf8.sh new file mode 100755 index 0000000000..934d1766a5 --- /dev/null +++ b/tests/numfmt/mb-non-utf8.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# Test handling of non-utf8 locales + +# Copyright (C) 2025 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src +print_ver_ numfmt printf + +export LC_ALL=zh_CN.gb18030 + +test "$(locale charmap 2>/dev/null | sed 's/gb/GB/')" = GB18030 || + skip_ 'GB18030 charset support not detected' + +# Requires support for strchr(), mbschr(), and mbsstr() respectively. +# Note 0xFF is invalid in GB18030, but we support all single byte delimiters. +for delim in ',' ':' "$(env printf '\xa2\xe3')" "$(env printf '\xff')"; do + num_out=$(numfmt --from=si --field=2 -d "$delim" "1${delim}2K") + test "$num_out" = "1${delim}2000" || fail=1 +done + +Exit $fail diff --git a/tests/misc/numfmt.pl b/tests/numfmt/numfmt.pl similarity index 100% rename from tests/misc/numfmt.pl rename to tests/numfmt/numfmt.pl -- 2.47.3