summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2023-01-17 14:09:41 +0100
committerBruno Haible <bruno@clisp.org>2023-01-17 14:09:41 +0100
commitd7a941f0785fcbc160f79a4bc1b9ec621d7b7dfd (patch)
tree8089f10a83106fb1a2ab4893260e895df87f9703 /tests
parent2cf7f442f52f70b3df6eb396eb93ea08e54883c5 (diff)
downloadgnulib-d7a941f0785fcbc160f79a4bc1b9ec621d7b7dfd.tar.gz
hard-locale: Port to Android ≥ 5.0.
* lib/hard-locale.c: Include <stdlib.h>. (hard_locale): On Android, consider also MB_CUR_MAX, even if the locale's name is "C". * tests/test-hard-locale.c (test_one, main): Assume that on Android, even the "C" locale is hard.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-hard-locale.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/tests/test-hard-locale.c b/tests/test-hard-locale.c
index eb02f4f6e6..6f94e6c3ac 100644
--- a/tests/test-hard-locale.c
+++ b/tests/test-hard-locale.c
@@ -38,8 +38,10 @@ test_one (const char *name, int failure_bitmask)
/* musl libc has special code for the C.UTF-8 locale; other than that,
all locale names are accepted and all locales are trivial.
OpenBSD returns the locale name that was set, but we don't know how it
- behaves under the hood. Likewise for Haiku. */
-#if defined MUSL_LIBC || defined __OpenBSD__ || defined __HAIKU__
+ behaves under the hood. Likewise for Haiku.
+ On Android >= 5.0, the "C" locale may have UTF-8 encoding, and we don't
+ know how it will behave in the future. */
+#if defined MUSL_LIBC || defined __OpenBSD__ || defined __HAIKU__ || defined __ANDROID__
expected = true;
#else
expected = !all_trivial;
@@ -57,12 +59,14 @@ test_one (const char *name, int failure_bitmask)
/* On NetBSD 7.0, some locales such as de_DE.ISO8859-1 and de_DE.UTF-8
have the LC_COLLATE category set to "C".
- Similarly, on musl libc, with the C.UTF-8 locale. */
+ Similarly, on musl libc, with the C.UTF-8 locale.
+ On Android >= 5.0, the "C" locale may have UTF-8 encoding, and we don't
+ know how it will behave in the future. */
#if defined __NetBSD__
expected = false;
#elif defined MUSL_LIBC
expected = strcmp (name, "C.UTF-8") != 0;
-#elif (defined __OpenBSD__ && HAVE_DUPLOCALE) || defined __HAIKU__ /* OpenBSD >= 6.2, Haiku */
+#elif (defined __OpenBSD__ && HAVE_DUPLOCALE) || defined __HAIKU__ || defined __ANDROID__ /* OpenBSD >= 6.2, Haiku, Android */
expected = true;
#else
expected = !all_trivial;
@@ -86,12 +90,16 @@ main ()
{
int fail = 0;
- /* The initial locale is the "C" or "POSIX" locale. */
+ /* The initial locale is the "C" or "POSIX" locale.
+ On Android >= 5.0, it is equivalent to the "C.UTF-8" locale, cf.
+ <https://lists.gnu.org/archive/html/bug-gnulib/2023-01/msg00141.html>. */
+#if ! defined __ANDROID__
if (hard_locale (LC_CTYPE) || hard_locale (LC_COLLATE))
{
fprintf (stderr, "The initial locale should not be hard!\n");
fail |= 1;
}
+#endif
all_trivial = (setlocale (LC_ALL, "foobar") != NULL);