From: Pádraig Brady Date: Mon, 6 Apr 2026 12:44:30 +0000 (+0100) Subject: tests: cut: expand GB18030 tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e4258ef02f2aedcd471e00607575c5812970e490;p=thirdparty%2Fcoreutils.git tests: cut: expand GB18030 tests * tests/cut/mb-non-utf8.sh: Add more test cases. --- diff --git a/tests/cut/mb-non-utf8.sh b/tests/cut/mb-non-utf8.sh index 00d9d0467c..896018a12f 100755 --- a/tests/cut/mb-non-utf8.sh +++ b/tests/cut/mb-non-utf8.sh @@ -24,10 +24,57 @@ export LC_ALL=zh_CN.gb18030 test "$(locale charmap 2>/dev/null | sed 's/gb/GB/')" = GB18030 || skip_ 'GB18030 charset support not detected' -for delim in ',' ':' "$(env printf '\xa2\xe3')" "$(env printf '\xff')"; do +delim_gb18030=$(env printf '\xa2\xe3') +delim_ff=$(env printf '\xff') + +# Exercise ASCII, multibyte, and invalid single-byte delimiters. +# Note 0xFF is invalid in GB18030, but we support all single byte delimiters. +for delim in ',' ':' "$delim_gb18030" "$delim_ff"; do num_out=$(printf "1${delim}2${delim}3\n" \ | cut -d "$delim" -f2,3 --output-delimiter=_) test "$num_out" = "2_3" || fail=1 done +# A valid 2-byte GB18030 character. +printf '%sx\n' "$delim_gb18030" | cut -c1 > out || fail=1 +printf '%s\n' "$delim_gb18030" > exp || framework_failure_ +compare exp out || fail=1 + +printf '%sx\n' "$delim_gb18030" | cut -c2 > out || fail=1 +printf 'x\n' > exp || framework_failure_ +compare exp out || fail=1 + +printf '%sx\n' "$delim_gb18030" | cut -b1 -n > out || fail=1 +printf '\n' > exp || framework_failure_ +compare exp out || fail=1 + +printf '%sx\n' "$delim_gb18030" | cut -b2 -n > out || fail=1 +printf '%s\n' "$delim_gb18030" > exp || framework_failure_ +compare exp out || fail=1 + +printf '1%s2%s3\n' "$delim_gb18030" "$delim_gb18030" \ + | cut -d "$delim_gb18030" -f1,3 > out || fail=1 +printf '1%s3\n' "$delim_gb18030" > exp || framework_failure_ +compare exp out || fail=1 + +printf '1%s2%s3\n' "$delim_gb18030" "$delim_gb18030" \ + | cut --complement -d "$delim_gb18030" -f1 > out || fail=1 +printf '2%s3\n' "$delim_gb18030" > exp || framework_failure_ +compare exp out || fail=1 + +printf '1%s2' "$delim_gb18030" \ + | cut -d "$delim_gb18030" -f2 > out || fail=1 +printf '2\n' > exp || framework_failure_ +compare exp out || fail=1 + +printf '1%s2\0' "$delim_gb18030" \ + | cut -z -d "$delim_gb18030" -f2 > out || fail=1 +printf '2\0' > exp || framework_failure_ +compare exp out || fail=1 + +printf '%s%s3\n' "$delim_gb18030" "$delim_gb18030" \ + | cut -d "$delim_gb18030" -f1-3 --output-delimiter=':' > out || fail=1 +printf '::3\n' > exp || framework_failure_ +compare exp out || fail=1 + Exit $fail