From: Bruno Haible Date: Thu, 30 Mar 2023 10:25:05 +0000 (+0200) Subject: stdlib tests: Check behaviour of C locale. X-Git-Tag: v1.0~1546 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=4993fb36f8c9d1a18b33285a941ae3ed2aa54c59;p=gnulib.git stdlib tests: Check behaviour of C locale. * tests/test-stdlib.c (main): Check MB_CUR_MAX. --- diff --git a/ChangeLog b/ChangeLog index fd39860f9b..ba75036c75 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2023-03-30 Bruno Haible + + stdlib tests: Check behaviour of C locale. + * tests/test-stdlib.c (main): Check MB_CUR_MAX. + 2023-03-30 Bruno Haible string-desc tests: Fix "make distcheck" failure. diff --git a/tests/test-stdlib.c b/tests/test-stdlib.c index ceccd4d233..0d3984701a 100644 --- a/tests/test-stdlib.c +++ b/tests/test-stdlib.c @@ -45,8 +45,19 @@ static_assert (sizeof NULL == sizeof (void *)); int main (void) { - if (test_sys_wait_macros ()) + /* POSIX:2018 says: + "In the POSIX locale the value of MB_CUR_MAX shall be 1." */ + /* On Android ≥ 5.0, the default locale is the "C.UTF-8" locale, not the + "C" locale. Furthermore, when you attempt to set the "C" or "POSIX" + locale via setlocale(), what you get is a "C" locale with UTF-8 encoding, + that is, effectively the "C.UTF-8" locale. */ +#ifndef __ANDROID__ + if (MB_CUR_MAX != 1) return 1; +#endif + + if (test_sys_wait_macros ()) + return 2; return exitcode; }