bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tests: Strengthen LC_CTYPE tests on OpenBSD, Android, Haiku


From: Bruno Haible
Subject: tests: Strengthen LC_CTYPE tests on OpenBSD, Android, Haiku
Date: Sun, 01 Sep 2024 00:20:50 +0200

OpenBSD 7.5, Android, and Haiku have no working French Unicode locale
(with a ',' a decimal separator and with French month names). But they
have an English Unicode locale (en_US.UTF-8). For LC_CTYPE tests, where
decimal separator and month names are irrelevant, this locale is just
as good as a French Unicode locale would be.

This patch changes many LC_CTYPE tests to use the en_US.UTF-8 locale
when the fr_FR.UTF-8 locale does not exist or does not match our
expectations.


2024-08-31  Bruno Haible  <bruno@clisp.org>

        tests: Strengthen LC_CTYPE tests on OpenBSD, Android, Haiku.
        * m4/locale-en.m4: New file, based on m4/locale-fr.m4.
        * m4/locale-ar.m4 (gt_LOCALE_AR): Update comments.
        * m4/locale-fr.m4 (gt_LOCALE_FR, gt_LOCALE_FR_UTF8): Likewise.
        * m4/locale-ja.m4 (gt_LOCALE_JA): Likewise.
        * m4/locale-tr.m4 (gt_LOCALE_TR_UTF8): Likewise.
        * m4/locale-zh.m4 (gt_LOCALE_ZH_CN): Likewise.
        * modules/btoc32-tests (Files): Add m4/locale-en.m4.
        (configure.ac): Invoke gt_LOCALE_EN_UTF8.
        (Makefile.am): Set LOCALE_EN_UTF8 in TESTS_ENVIRONMENT.
        * modules/btowc-tests: Likewise.
        * modules/c32isalnum-tests: Likewise.
        * modules/c32isalpha-tests: Likewise.
        * modules/c32isblank-tests: Likewise.
        * modules/c32iscntrl-tests: Likewise.
        * modules/c32isdigit-tests: Likewise.
        * modules/c32isgraph-tests: Likewise.
        * modules/c32islower-tests: Likewise.
        * modules/c32isprint-tests: Likewise.
        * modules/c32ispunct-tests: Likewise.
        * modules/c32isspace-tests: Likewise.
        * modules/c32isupper-tests: Likewise.
        * modules/c32isxdigit-tests: Likewise.
        * modules/c32rtomb-tests: Likewise.
        * modules/c32snrtombs-tests: Likewise.
        * modules/c32srtombs-tests: Likewise.
        * modules/c32stombs-tests: Likewise.
        * modules/c32tolower-tests: Likewise.
        * modules/c32toupper-tests: Likewise.
        * modules/fnmatch-tests: Likewise.
        * modules/iswdigit-tests: Likewise.
        * modules/iswxdigit-tests: Likewise.
        * modules/mbmemcasecmp-tests: Likewise.
        * modules/mbmemcasecoll-tests: Likewise.
        * modules/mbrlen-tests: Likewise.
        * modules/mbrtoc16-tests: Likewise.
        * modules/mbrtoc32-tests: Likewise.
        * modules/mbrtowc-tests: Likewise.
        * modules/mbscasestr-tests: Likewise.
        * modules/mbscspn-tests: Likewise.
        * modules/mbsinit-tests: Likewise.
        * modules/mbslen-tests: Likewise.
        * modules/mbsnlen-tests: Likewise.
        * modules/mbsnrtoc32s-tests: Likewise.
        * modules/mbsnrtowcs-tests: Likewise.
        * modules/mbspbrk-tests: Likewise.
        * modules/mbsrtoc32s-tests: Likewise.
        * modules/mbsrtowcs-tests: Likewise.
        * modules/mbsspn-tests: Likewise.
        * modules/mbsstr-tests: Likewise.
        * modules/mbstoc32s-tests: Likewise.
        * modules/mbstowcs-tests: Likewise.
        * modules/mcel-tests: Likewise.
        * modules/trim-tests: Likewise.
        * modules/unicodeio-tests: Likewise.
        * modules/wcrtomb-tests: Likewise.
        * modules/wcsnrtombs-tests: Likewise.
        * modules/wcsrtombs-tests: Likewise.
        * tests/test-btoc32-3.sh: If LOCALE_FR_UTF8 is 'none', try
        LOCALE_EN_UTF8 instead.
        * tests/test-btowc-3.sh: Likewise.
        * tests/test-c32isalnum.sh: Likewise.
        * tests/test-c32isalpha.sh: Likewise.
        * tests/test-c32isblank.sh: Likewise.
        * tests/test-c32iscntrl.sh: Likewise.
        * tests/test-c32isdigit.sh: Likewise.
        * tests/test-c32isgraph.sh: Likewise.
        * tests/test-c32islower.sh: Likewise.
        * tests/test-c32isprint.sh: Likewise.
        * tests/test-c32ispunct.sh: Likewise.
        * tests/test-c32isspace.sh: Likewise.
        * tests/test-c32isupper.sh: Likewise.
        * tests/test-c32isxdigit.sh: Likewise.
        * tests/test-c32rtomb.sh: Likewise.
        * tests/test-c32snrtombs-3.sh: Likewise.
        * tests/test-c32srtombs-3.sh: Likewise.
        * tests/test-c32stombs-3.sh: Likewise.
        * tests/test-c32tolower.sh: Likewise.
        * tests/test-c32toupper.sh: Likewise.
        * tests/test-fnmatch-3.sh: Likewise.
        * tests/test-iswdigit.sh: Likewise.
        * tests/test-iswxdigit.sh: Likewise.
        * tests/test-mbmemcasecmp-3.sh: Likewise.
        * tests/test-mbmemcasecoll-3.sh: Likewise.
        * tests/test-mbrlen-3.sh: Likewise.
        * tests/test-mbrtoc16-3.sh: Likewise.
        * tests/test-mbrtoc32-3.sh: Likewise.
        * tests/test-mbrtowc-3.sh: Likewise.
        * tests/test-mbscasestr2.sh: Likewise.
        * tests/test-mbscspn.sh: Likewise.
        * tests/test-mbsinit.sh: Likewise.
        * tests/test-mbslen.sh: Likewise.
        * tests/test-mbsnlen.sh: Likewise.
        * tests/test-mbsnrtoc32s-3.sh: Likewise.
        * tests/test-mbsnrtowcs-3.sh: Likewise.
        * tests/test-mbspbrk.sh: Likewise.
        * tests/test-mbsrtoc32s-3.sh: Likewise.
        * tests/test-mbsrtowcs-3.sh: Likewise.
        * tests/test-mbsspn.sh: Likewise.
        * tests/test-mbsstr2.sh: Likewise.
        * tests/test-mbstoc32s-3.sh: Likewise.
        * tests/test-mbstowcs-3.sh: Likewise.
        * tests/test-mcel-3.sh: Likewise.
        * tests/test-trim2.sh: Likewise.
        * tests/test-unicodeio2.sh: Likewise.
        * tests/test-wcrtomb.sh: Likewise.
        * tests/test-wcsnrtombs-3.sh: Likewise.
        * tests/test-wcsrtombs-3.sh: Likewise.

diff --git a/m4/locale-ar.m4 b/m4/locale-ar.m4
index 8efdb7789b..2dffa1dff4 100644
--- a/m4/locale-ar.m4
+++ b/m4/locale-ar.m4
@@ -1,5 +1,5 @@
 # locale-ar.m4
-# serial 11
+# serial 12
 dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -65,10 +65,11 @@ AC_DEFUN_ONCE([gt_LOCALE_AR]
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Note that on native Windows, the Arabic locale is
diff --git a/m4/locale-en.m4 b/m4/locale-en.m4
new file mode 100644
index 0000000000..39d08a23b0
--- /dev/null
+++ b/m4/locale-en.m4
@@ -0,0 +1,137 @@
+# locale-en.m4
+# serial 1
+dnl Copyright (C) 2003-2024 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Determine the name of an English (or American English) locale with
+dnl UTF-8 encoding.
+AC_DEFUN_ONCE([gt_LOCALE_EN_UTF8],
+[
+  AC_REQUIRE([AC_CANONICAL_HOST])
+  AC_REQUIRE([AM_LANGINFO_CODESET])
+  AC_CACHE_CHECK([for an english Unicode locale], [gt_cv_locale_en_utf8], [
+    case "$host_os" in
+      *-musl* | midipix*)
+        dnl On musl libc, all kinds of ll_CC.UTF-8 locales exist, even without
+        dnl any locale file on disk. But they are effectively equivalent to the
+        dnl C.UTF-8 locale, except for locale categories (such as LC_MESSSAGES)
+        dnl for which localizations (.mo files) have been installed.
+        gt_cv_locale_en_utf8=en_US.UTF-8
+        ;;
+      *)
+        AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+  /* On BeOS and Haiku, locales are not implemented in libc.  Rather, libintl
+     imitates locale dependent behaviour by looking at the environment
+     variables, and all locales use the UTF-8 encoding.  */
+#if !(defined __BEOS__ || defined __HAIKU__)
+  /* Check whether the given locale name is recognized by the system.  */
+# if defined _WIN32 && !defined __CYGWIN__
+  /* On native Windows, setlocale(category, "") looks at the system settings,
+     not at the environment variables.  Also, when an encoding suffix such
+     as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
+     category of the locale to "C".  */
+  if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+      || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+    return 1;
+# else
+  if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+  /* Check whether nl_langinfo(CODESET) is "UTF-8" or equivalent.  */
+# if HAVE_LANGINFO_CODESET
+  {
+    const char *cs = nl_langinfo (CODESET);
+    if (!(strcmp (cs, "UTF-8") == 0 || strcmp (cs, "UTF8") == 0
+          || strcmp (cs, "utf-8") == 0 || strcmp (cs, "utf8") == 0))
+      return 1;
+  }
+# endif
+# ifdef __CYGWIN__
+  /* On Cygwin, avoid locale names without encoding suffix, because the
+     locale_charset() function relies on the encoding suffix.  Note that
+     LC_ALL is set on the command line.  */
+  if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+  /* Check the third month name.  */
+  t.tm_year = 1975 - 1900; t.tm_mon = 3 - 1; t.tm_mday = 24;
+  if (strftime (buf, sizeof (buf), "%B", &t) < 5 || strcmp (buf, "March") != 0)
+    return 1;
+#endif
+#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
+  /* Check whether the decimal separator is a dot.  */
+  if (localeconv () ->decimal_point[0] != '.') return 1;
+#endif
+  return 0;
+}
+          ]])])
+        if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
+          case "$host_os" in
+            # Handle native Windows specially, because there setlocale() 
interprets
+            # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "en" or "eng" as "English" or "English_United States.1252",
+            # "fr" or "fra" as "French" or "French_France.1252",
+            # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+            # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
+            # and similar.
+            mingw* | windows*)
+              # Test for the hypothetical native Windows locale name.
+              if (LC_ALL='English_United States.65001' LC_TIME= LC_CTYPE= 
./conftest; exit) 2>/dev/null; then
+                gt_cv_locale_en_utf8='English_United States.65001'
+              else
+                # None found.
+                gt_cv_locale_en_utf8=none
+              fi
+              ;;
+            *)
+              # Setting LC_ALL is not enough. Need to set LC_TIME to empty, 
because
+              # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning 
of the
+              # configure script would override the LC_ALL setting. Likewise 
for
+              # LC_CTYPE, which is also set at the beginning of the configure 
script.
+              # Test for the locale name with explicit encoding suffix first
+              # (this is necessary on Haiku).
+              if (LC_ALL=en_US.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
+                gt_cv_locale_en_utf8=en_US.UTF-8
+              else
+                # Test for the locale name without encoding suffix.
+                if (LC_ALL=en_US LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
+                  gt_cv_locale_en_utf8=en_US
+                else
+                  # Test for the Solaris 10 locale name.
+                  if (LC_ALL=en.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 
2>/dev/null; then
+                    gt_cv_locale_en_utf8=en.UTF-8
+                  else
+                    # None found.
+                    gt_cv_locale_en_utf8=none
+                  fi
+                fi
+              fi
+              ;;
+          esac
+        fi
+        rm -fr conftest*
+        ;;
+    esac
+  ])
+  LOCALE_EN_UTF8="$gt_cv_locale_en_utf8"
+  case "$LOCALE_EN_UTF8" in #(
+    '' | *[[\"\$\'*@<:@]]*)
+      dnl The empty value occurs when the conftest.c program above could not
+      dnl be compiled.  The other values might cause trouble with sh or make.
+      AC_MSG_WARN([invalid locale "$LOCALE_EN_UTF8"; assuming "none"])
+      LOCALE_EN_UTF8=none;;
+  esac
+  AC_SUBST([LOCALE_EN_UTF8])
+])
diff --git a/m4/locale-fr.m4 b/m4/locale-fr.m4
index f8d7c543e0..3832c10d36 100644
--- a/m4/locale-fr.m4
+++ b/m4/locale-fr.m4
@@ -1,5 +1,5 @@
 # locale-fr.m4
-# serial 23
+# serial 24
 dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -71,8 +71,9 @@ AC_DEFUN_ONCE([gt_LOCALE_FR]
   if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
 # if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
   /* Check whether the decimal separator is a comma.
-     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
-     are nl_langinfo(RADIXCHAR) are both ".".  */
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale
+     and on Haiku in the fr_FR.UTF-8 locale,
+     localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".".  */
   if (localeconv () ->decimal_point[0] != ',') return 1;
 # endif
   return 0;
@@ -82,10 +83,11 @@ AC_DEFUN_ONCE([gt_LOCALE_FR]
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Test for the native Windows locale name.
@@ -214,8 +216,9 @@ AC_DEFUN_ONCE([gt_LOCALE_FR_UTF8]
 #endif
 #if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy.  */
   /* Check whether the decimal separator is a comma.
-     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
-     are nl_langinfo(RADIXCHAR) are both ".".  */
+     On NetBSD 3.0 in the fr_FR.ISO8859-1 locale
+     and on Haiku in the fr_FR.UTF-8 locale,
+     localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".".  */
   if (localeconv () ->decimal_point[0] != ',') return 1;
 #endif
   return 0;
@@ -224,10 +227,11 @@ AC_DEFUN_ONCE([gt_LOCALE_FR_UTF8]
         if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
           case "$host_os" in
             # Handle native Windows specially, because there setlocale() 
interprets
-            # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+            # "en" or "eng" as "English" or "English_United States.1252",
             # "fr" or "fra" as "French" or "French_France.1252",
             # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-            # "ja" as "Japanese" or "Japanese_Japan.932",
+            # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
             # and similar.
             mingw* | windows*)
               # Test for the hypothetical native Windows locale name.
diff --git a/m4/locale-ja.m4 b/m4/locale-ja.m4
index 8423bcb972..b94cd7ae4d 100644
--- a/m4/locale-ja.m4
+++ b/m4/locale-ja.m4
@@ -1,5 +1,5 @@
 # locale-ja.m4
-# serial 18
+# serial 19
 dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -86,10 +86,11 @@ AC_DEFUN_ONCE([gt_LOCALE_JA]
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Note that on native Windows, the Japanese locale is
diff --git a/m4/locale-tr.m4 b/m4/locale-tr.m4
index 1160f62a2f..a3ead69b3c 100644
--- a/m4/locale-tr.m4
+++ b/m4/locale-tr.m4
@@ -1,5 +1,5 @@
 # locale-tr.m4
-# serial 15
+# serial 16
 dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -79,10 +79,11 @@ AC_DEFUN_ONCE([gt_LOCALE_TR_UTF8]
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Test for the hypothetical native Windows locale name.
diff --git a/m4/locale-zh.m4 b/m4/locale-zh.m4
index fb9f26ab9f..040cab0c7a 100644
--- a/m4/locale-zh.m4
+++ b/m4/locale-zh.m4
@@ -1,5 +1,5 @@
 # locale-zh.m4
-# serial 19
+# serial 20
 dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -101,10 +101,11 @@ AC_DEFUN_ONCE([gt_LOCALE_ZH_CN]
     if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then
       case "$host_os" in
         # Handle native Windows specially, because there setlocale() interprets
-        # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+        # "en" or "eng" as "English" or "English_United States.1252",
         # "fr" or "fra" as "French" or "French_France.1252",
         # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
-        # "ja" as "Japanese" or "Japanese_Japan.932",
+        # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
         # and similar.
         mingw* | windows*)
           # Test for the hypothetical native Windows locale name.
diff --git a/modules/btoc32-tests b/modules/btoc32-tests
index a5ff796d3e..e29abca523 100644
--- a/modules/btoc32-tests
+++ b/modules/btoc32-tests
@@ -5,6 +5,7 @@ tests/test-btoc32-3.sh
 tests/test-btoc32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -12,11 +13,15 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-btoc32-1.sh test-btoc32-2.sh test-btoc32-3.sh
-TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR='@LOCALE_FR@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-btoc32
 test_btoc32_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(LIBC32CONV)
diff --git a/modules/btowc-tests b/modules/btowc-tests
index efb86ce8a1..37bec41ab6 100644
--- a/modules/btowc-tests
+++ b/modules/btowc-tests
@@ -5,6 +5,7 @@ tests/test-btowc-3.sh
 tests/test-btowc.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -12,11 +13,15 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-btowc-1.sh test-btowc-2.sh test-btowc-3.sh
-TESTS_ENVIRONMENT += LOCALE_FR='@LOCALE_FR@' LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR='@LOCALE_FR@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-btowc
 test_btowc_LDADD = $(LDADD) $(SETLOCALE_LIB)
diff --git a/modules/c32isalnum-tests b/modules/c32isalnum-tests
index 3c8c52a5a9..3dc039f31f 100644
--- a/modules/c32isalnum-tests
+++ b/modules/c32isalnum-tests
@@ -3,6 +3,7 @@ tests/test-c32isalnum.sh
 tests/test-c32isalnum.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32isalnum.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isalpha-tests b/modules/c32isalpha-tests
index 22efbd6842..f488d01251 100644
--- a/modules/c32isalpha-tests
+++ b/modules/c32isalpha-tests
@@ -3,6 +3,7 @@ tests/test-c32isalpha.sh
 tests/test-c32isalpha.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -14,6 +15,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -23,6 +25,7 @@ gl_MUSL_LIBC
 Makefile.am:
 TESTS += test-c32isalpha.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isblank-tests b/modules/c32isblank-tests
index ffcab15a9a..95aa7530cb 100644
--- a/modules/c32isblank-tests
+++ b/modules/c32isblank-tests
@@ -3,6 +3,7 @@ tests/test-c32isblank.sh
 tests/test-c32isblank.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32isblank.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32iscntrl-tests b/modules/c32iscntrl-tests
index 9a25ba9360..fbb1623355 100644
--- a/modules/c32iscntrl-tests
+++ b/modules/c32iscntrl-tests
@@ -3,6 +3,7 @@ tests/test-c32iscntrl.sh
 tests/test-c32iscntrl.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -14,6 +15,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -23,6 +25,7 @@ gl_MUSL_LIBC
 Makefile.am:
 TESTS += test-c32iscntrl.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isdigit-tests b/modules/c32isdigit-tests
index bbb70cd352..97e577a487 100644
--- a/modules/c32isdigit-tests
+++ b/modules/c32isdigit-tests
@@ -3,6 +3,7 @@ tests/test-c32isdigit.sh
 tests/test-c32isdigit.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32isdigit.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isgraph-tests b/modules/c32isgraph-tests
index af717306e0..56c5665786 100644
--- a/modules/c32isgraph-tests
+++ b/modules/c32isgraph-tests
@@ -3,6 +3,7 @@ tests/test-c32isgraph.sh
 tests/test-c32isgraph.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -14,6 +15,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -23,6 +25,7 @@ gl_MUSL_LIBC
 Makefile.am:
 TESTS += test-c32isgraph.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32islower-tests b/modules/c32islower-tests
index e3dac1d2d9..9a6dc8b817 100644
--- a/modules/c32islower-tests
+++ b/modules/c32islower-tests
@@ -3,6 +3,7 @@ tests/test-c32islower.sh
 tests/test-c32islower.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -14,6 +15,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -23,6 +25,7 @@ gl_MUSL_LIBC
 Makefile.am:
 TESTS += test-c32islower.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isprint-tests b/modules/c32isprint-tests
index f421f1b9d5..91058d3efb 100644
--- a/modules/c32isprint-tests
+++ b/modules/c32isprint-tests
@@ -3,6 +3,7 @@ tests/test-c32isprint.sh
 tests/test-c32isprint.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -14,6 +15,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -23,6 +25,7 @@ gl_MUSL_LIBC
 Makefile.am:
 TESTS += test-c32isprint.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32ispunct-tests b/modules/c32ispunct-tests
index 15297210b7..e7f6d7e190 100644
--- a/modules/c32ispunct-tests
+++ b/modules/c32ispunct-tests
@@ -3,6 +3,7 @@ tests/test-c32ispunct.sh
 tests/test-c32ispunct.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32ispunct.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isspace-tests b/modules/c32isspace-tests
index 6df45cd997..664a1fb3be 100644
--- a/modules/c32isspace-tests
+++ b/modules/c32isspace-tests
@@ -3,6 +3,7 @@ tests/test-c32isspace.sh
 tests/test-c32isspace.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32isspace.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isupper-tests b/modules/c32isupper-tests
index e3584c8bd5..8436cc16f6 100644
--- a/modules/c32isupper-tests
+++ b/modules/c32isupper-tests
@@ -3,6 +3,7 @@ tests/test-c32isupper.sh
 tests/test-c32isupper.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32isupper.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32isxdigit-tests b/modules/c32isxdigit-tests
index 7d119dbfe1..480a3bc2d0 100644
--- a/modules/c32isxdigit-tests
+++ b/modules/c32isxdigit-tests
@@ -3,6 +3,7 @@ tests/test-c32isxdigit.sh
 tests/test-c32isxdigit.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtoc32
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32isxdigit.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32rtomb-tests b/modules/c32rtomb-tests
index 4051a212c9..0aaa6626b7 100644
--- a/modules/c32rtomb-tests
+++ b/modules/c32rtomb-tests
@@ -11,6 +11,7 @@ tests/test-c32rtomb-w32-8.sh
 tests/test-c32rtomb-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -23,6 +24,7 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -35,6 +37,7 @@ TESTS += \
   test-c32rtomb-w32-5.sh test-c32rtomb-w32-6.sh test-c32rtomb-w32-7.sh \
   test-c32rtomb-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32snrtombs-tests b/modules/c32snrtombs-tests
index 85250e347c..d9aa7b0979 100644
--- a/modules/c32snrtombs-tests
+++ b/modules/c32snrtombs-tests
@@ -6,6 +6,7 @@ tests/test-c32snrtombs-5.sh
 tests/test-c32snrtombs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -16,6 +17,7 @@ setlocale
 mbstoc32s
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -24,6 +26,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32snrtombs-2.sh test-c32snrtombs-3.sh test-c32snrtombs-4.sh 
test-c32snrtombs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32srtombs-tests b/modules/c32srtombs-tests
index 888d7324ac..01026ed6d6 100644
--- a/modules/c32srtombs-tests
+++ b/modules/c32srtombs-tests
@@ -6,6 +6,7 @@ tests/test-c32srtombs-5.sh
 tests/test-c32srtombs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -16,6 +17,7 @@ setlocale
 mbstoc32s
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -24,6 +26,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32srtombs-2.sh test-c32srtombs-3.sh test-c32srtombs-4.sh 
test-c32srtombs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32stombs-tests b/modules/c32stombs-tests
index b9fe1a346e..8b0d47fa02 100644
--- a/modules/c32stombs-tests
+++ b/modules/c32stombs-tests
@@ -6,6 +6,7 @@ tests/test-c32stombs-5.sh
 tests/test-c32stombs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -16,6 +17,7 @@ setlocale
 mbstoc32s
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -24,6 +26,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32stombs-2.sh test-c32stombs-3.sh test-c32stombs-4.sh 
test-c32stombs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32tolower-tests b/modules/c32tolower-tests
index 48f53e42cf..74aa972f1e 100644
--- a/modules/c32tolower-tests
+++ b/modules/c32tolower-tests
@@ -3,6 +3,7 @@ tests/test-c32tolower.sh
 tests/test-c32tolower.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -14,6 +15,7 @@ c32rtomb
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -22,6 +24,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-c32tolower.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/c32toupper-tests b/modules/c32toupper-tests
index 701acc1c2e..18bb562af5 100644
--- a/modules/c32toupper-tests
+++ b/modules/c32toupper-tests
@@ -3,6 +3,7 @@ tests/test-c32toupper.sh
 tests/test-c32toupper.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -15,6 +16,7 @@ c32rtomb
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -24,6 +26,7 @@ gl_MUSL_LIBC
 Makefile.am:
 TESTS += test-c32toupper.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/fnmatch-tests b/modules/fnmatch-tests
index 8dbb7330ed..e312c8063d 100644
--- a/modules/fnmatch-tests
+++ b/modules/fnmatch-tests
@@ -15,6 +15,7 @@ tests/test-fnmatch-w32-8.sh
 tests/test-fnmatch-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -27,6 +28,7 @@ mbrtowc
 wctype-h
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -40,6 +42,7 @@ TESTS += \
   test-fnmatch-w32-5.sh test-fnmatch-w32-6.sh test-fnmatch-w32-7.sh \
   test-fnmatch-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/iswdigit-tests b/modules/iswdigit-tests
index c224ca6516..c2b15d6107 100644
--- a/modules/iswdigit-tests
+++ b/modules/iswdigit-tests
@@ -3,6 +3,7 @@ tests/test-iswdigit.sh
 tests/test-iswdigit.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtowc
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-iswdigit.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/iswxdigit-tests b/modules/iswxdigit-tests
index c2f9f652a8..46db704b6a 100644
--- a/modules/iswxdigit-tests
+++ b/modules/iswxdigit-tests
@@ -3,6 +3,7 @@ tests/test-iswxdigit.sh
 tests/test-iswxdigit.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -13,6 +14,7 @@ mbrtowc
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -21,6 +23,7 @@ gt_LOCALE_ZH_CN
 Makefile.am:
 TESTS += test-iswxdigit.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbmemcasecmp-tests b/modules/mbmemcasecmp-tests
index 06b20be337..0a75c7e22d 100644
--- a/modules/mbmemcasecmp-tests
+++ b/modules/mbmemcasecmp-tests
@@ -5,6 +5,7 @@ tests/test-mbmemcasecmp-4.sh
 tests/test-mbmemcasecmp.c
 tests/test-mbmemcasecmp.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-tr.m4
 m4/codeset.m4
@@ -16,6 +17,7 @@ mbrtowc
 wctype-h
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_TR_UTF8
@@ -23,6 +25,7 @@ gt_LOCALE_TR_UTF8
 Makefile.am:
 TESTS += test-mbmemcasecmp-2.sh test-mbmemcasecmp-3.sh test-mbmemcasecmp-4.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_TR_UTF8='@LOCALE_TR_UTF8@'
diff --git a/modules/mbmemcasecoll-tests b/modules/mbmemcasecoll-tests
index 7486cbf333..713749f51d 100644
--- a/modules/mbmemcasecoll-tests
+++ b/modules/mbmemcasecoll-tests
@@ -5,6 +5,7 @@ tests/test-mbmemcasecoll-4.sh
 tests/test-mbmemcasecoll.c
 tests/test-mbmemcasecmp.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-tr.m4
 m4/codeset.m4
@@ -16,6 +17,7 @@ mbrtowc
 wctype-h
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_TR_UTF8
@@ -23,6 +25,7 @@ gt_LOCALE_TR_UTF8
 Makefile.am:
 TESTS += test-mbmemcasecoll-2.sh test-mbmemcasecoll-3.sh 
test-mbmemcasecoll-4.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_TR_UTF8='@LOCALE_TR_UTF8@'
diff --git a/modules/mbrlen-tests b/modules/mbrlen-tests
index 18878eb1d1..894fd09b44 100644
--- a/modules/mbrlen-tests
+++ b/modules/mbrlen-tests
@@ -15,6 +15,7 @@ tests/test-mbrlen-w32-8.sh
 tests/test-mbrlen-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -27,6 +28,7 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -40,6 +42,7 @@ TESTS += \
   test-mbrlen-w32-5.sh test-mbrlen-w32-6.sh test-mbrlen-w32-7.sh \
   test-mbrlen-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbrtoc16-tests b/modules/mbrtoc16-tests
index 298d945bc3..1982eaca70 100644
--- a/modules/mbrtoc16-tests
+++ b/modules/mbrtoc16-tests
@@ -15,6 +15,7 @@ tests/test-mbrtoc16-w32-8.sh
 tests/test-mbrtoc16-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -28,6 +29,7 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -41,6 +43,7 @@ TESTS += \
   test-mbrtoc16-w32-5.sh test-mbrtoc16-w32-6.sh test-mbrtoc16-w32-7.sh \
   test-mbrtoc16-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbrtoc32-tests b/modules/mbrtoc32-tests
index db052209da..b3c70b8e1f 100644
--- a/modules/mbrtoc32-tests
+++ b/modules/mbrtoc32-tests
@@ -15,6 +15,7 @@ tests/test-mbrtoc32-w32-8.sh
 tests/test-mbrtoc32-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -28,6 +29,7 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -41,6 +43,7 @@ TESTS += \
   test-mbrtoc32-w32-5.sh test-mbrtoc32-w32-6.sh test-mbrtoc32-w32-7.sh \
   test-mbrtoc32-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbrtowc-tests b/modules/mbrtowc-tests
index af02c94016..d152e2e472 100644
--- a/modules/mbrtowc-tests
+++ b/modules/mbrtowc-tests
@@ -15,6 +15,7 @@ tests/test-mbrtowc-w32-8.sh
 tests/test-mbrtowc-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -27,6 +28,7 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -40,6 +42,7 @@ TESTS += \
   test-mbrtowc-w32-5.sh test-mbrtowc-w32-6.sh test-mbrtowc-w32-7.sh \
   test-mbrtowc-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbscasestr-tests b/modules/mbscasestr-tests
index 867d2153e4..e172ea47b3 100644
--- a/modules/mbscasestr-tests
+++ b/modules/mbscasestr-tests
@@ -7,6 +7,7 @@ tests/test-mbscasestr3.c
 tests/test-mbscasestr4.sh
 tests/test-mbscasestr4.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-tr.m4
 m4/locale-zh.m4
@@ -16,13 +17,18 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 gt_LOCALE_TR_UTF8
 gt_LOCALE_ZH_CN
 
 Makefile.am:
 TESTS += test-mbscasestr1 test-mbscasestr2.sh test-mbscasestr3.sh 
test-mbscasestr4.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' 
LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+  LOCALE_TR_UTF8='@LOCALE_TR_UTF8@' \
+  LOCALE_ZH_CN='@LOCALE_ZH_CN@'
 check_PROGRAMS += test-mbscasestr1 test-mbscasestr2 test-mbscasestr3 
test-mbscasestr4
 test_mbscasestr1_LDADD = $(LDADD) $(LIBUNISTRING) $(MBRTOWC_LIB) $(LIBC32CONV)
 test_mbscasestr2_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) 
$(MBRTOWC_LIB) $(LIBC32CONV)
diff --git a/modules/mbscspn-tests b/modules/mbscspn-tests
index 4d8cb013ea..88ad1987df 100644
--- a/modules/mbscspn-tests
+++ b/modules/mbscspn-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-mbscspn.sh
 tests/test-mbscspn.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -9,10 +10,13 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-mbscspn.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-mbscspn
 test_mbscspn_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) 
$(LIBC32CONV)
diff --git a/modules/mbsinit-tests b/modules/mbsinit-tests
index 15f21581c7..c06609e97d 100644
--- a/modules/mbsinit-tests
+++ b/modules/mbsinit-tests
@@ -3,6 +3,7 @@ tests/test-mbsinit.sh
 tests/test-mbsinit.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -11,10 +12,13 @@ mbrtowc
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-mbsinit.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-mbsinit
 test_mbsinit_LDADD = $(LDADD) $(SETLOCALE_LIB) $(MBRTOWC_LIB)
diff --git a/modules/mbslen-tests b/modules/mbslen-tests
index 0d21eddab8..d2c6cc91f1 100644
--- a/modules/mbslen-tests
+++ b/modules/mbslen-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-mbslen.sh
 tests/test-mbslen.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -9,10 +10,13 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-mbslen.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-mbslen
 test_mbslen_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) 
$(LIBC32CONV)
diff --git a/modules/mbsnlen-tests b/modules/mbsnlen-tests
index d6fad3c8cb..77b389204d 100644
--- a/modules/mbsnlen-tests
+++ b/modules/mbsnlen-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-mbsnlen.sh
 tests/test-mbsnlen.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -9,10 +10,13 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-mbsnlen.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-mbsnlen
 test_mbsnlen_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) 
$(LIBC32CONV)
diff --git a/modules/mbsnrtoc32s-tests b/modules/mbsnrtoc32s-tests
index bb02c10852..e5c238a5cd 100644
--- a/modules/mbsnrtoc32s-tests
+++ b/modules/mbsnrtoc32s-tests
@@ -7,6 +7,7 @@ tests/test-mbsnrtoc32s-5.sh
 tests/test-mbsnrtoc32s.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -20,6 +21,7 @@ c32tob
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -30,6 +32,7 @@ TESTS += \
   test-mbsnrtoc32s-1.sh test-mbsnrtoc32s-2.sh test-mbsnrtoc32s-3.sh \
   test-mbsnrtoc32s-4.sh test-mbsnrtoc32s-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbsnrtowcs-tests b/modules/mbsnrtowcs-tests
index 5ab84b6c71..9e84836401 100644
--- a/modules/mbsnrtowcs-tests
+++ b/modules/mbsnrtowcs-tests
@@ -7,6 +7,7 @@ tests/test-mbsnrtowcs-5.sh
 tests/test-mbsnrtowcs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -19,6 +20,7 @@ wctob
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -29,6 +31,7 @@ TESTS += \
   test-mbsnrtowcs-1.sh test-mbsnrtowcs-2.sh test-mbsnrtowcs-3.sh \
   test-mbsnrtowcs-4.sh test-mbsnrtowcs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbspbrk-tests b/modules/mbspbrk-tests
index 9ca44124cb..83c40afae3 100644
--- a/modules/mbspbrk-tests
+++ b/modules/mbspbrk-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-mbspbrk.sh
 tests/test-mbspbrk.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -9,10 +10,13 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-mbspbrk.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-mbspbrk
 test_mbspbrk_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) 
$(LIBC32CONV)
diff --git a/modules/mbsrtoc32s-tests b/modules/mbsrtoc32s-tests
index 0851867518..f0cd5441cb 100644
--- a/modules/mbsrtoc32s-tests
+++ b/modules/mbsrtoc32s-tests
@@ -7,6 +7,7 @@ tests/test-mbsrtoc32s-5.sh
 tests/test-mbsrtoc32s.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -20,6 +21,7 @@ c32tob
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -30,6 +32,7 @@ TESTS += \
   test-mbsrtoc32s-1.sh test-mbsrtoc32s-2.sh test-mbsrtoc32s-3.sh \
   test-mbsrtoc32s-4.sh test-mbsrtoc32s-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbsrtowcs-tests b/modules/mbsrtowcs-tests
index ec7c5c9f6a..6e98690a00 100644
--- a/modules/mbsrtowcs-tests
+++ b/modules/mbsrtowcs-tests
@@ -7,6 +7,7 @@ tests/test-mbsrtowcs-5.sh
 tests/test-mbsrtowcs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -19,6 +20,7 @@ wctob
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -29,6 +31,7 @@ TESTS += \
   test-mbsrtowcs-1.sh test-mbsrtowcs-2.sh test-mbsrtowcs-3.sh \
   test-mbsrtowcs-4.sh test-mbsrtowcs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbsspn-tests b/modules/mbsspn-tests
index d720e47bd9..d1a8c45c3a 100644
--- a/modules/mbsspn-tests
+++ b/modules/mbsspn-tests
@@ -2,6 +2,7 @@ Files:
 tests/test-mbsspn.sh
 tests/test-mbsspn.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/codeset.m4
 
@@ -9,10 +10,13 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 
 Makefile.am:
 TESTS += test-mbsspn.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@'
 check_PROGRAMS += test-mbsspn
 test_mbsspn_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) 
$(LIBC32CONV)
diff --git a/modules/mbsstr-tests b/modules/mbsstr-tests
index 34d6fa89b6..871f2399b1 100644
--- a/modules/mbsstr-tests
+++ b/modules/mbsstr-tests
@@ -5,6 +5,7 @@ tests/test-mbsstr2.c
 tests/test-mbsstr3.sh
 tests/test-mbsstr3.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-zh.m4
 m4/codeset.m4
@@ -13,12 +14,16 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 gt_LOCALE_ZH_CN
 
 Makefile.am:
 TESTS += test-mbsstr1 test-mbsstr2.sh test-mbsstr3.sh
-TESTS_ENVIRONMENT += LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' 
LOCALE_ZH_CN='@LOCALE_ZH_CN@'
+TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
+  LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
+  LOCALE_ZH_CN='@LOCALE_ZH_CN@'
 check_PROGRAMS += test-mbsstr1 test-mbsstr2 test-mbsstr3
 test_mbsstr1_LDADD = $(LDADD) $(LIBUNISTRING) $(MBRTOWC_LIB) $(LIBC32CONV)
 test_mbsstr2_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) 
$(LIBC32CONV)
diff --git a/modules/mbstoc32s-tests b/modules/mbstoc32s-tests
index f7f6af8aa5..df04385413 100644
--- a/modules/mbstoc32s-tests
+++ b/modules/mbstoc32s-tests
@@ -7,6 +7,7 @@ tests/test-mbstoc32s-5.sh
 tests/test-mbstoc32s.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -18,6 +19,7 @@ c32tob
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -28,6 +30,7 @@ TESTS += \
   test-mbstoc32s-1.sh test-mbstoc32s-2.sh test-mbstoc32s-3.sh \
   test-mbstoc32s-4.sh test-mbstoc32s-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mbstowcs-tests b/modules/mbstowcs-tests
index fa66f816fa..92724bb936 100644
--- a/modules/mbstowcs-tests
+++ b/modules/mbstowcs-tests
@@ -7,6 +7,7 @@ tests/test-mbstowcs-5.sh
 tests/test-mbstowcs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -19,6 +20,7 @@ wctob
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -29,6 +31,7 @@ TESTS += \
   test-mbstowcs-1.sh test-mbstowcs-2.sh test-mbstowcs-3.sh test-mbstowcs-4.sh \
   test-mbstowcs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/mcel-tests b/modules/mcel-tests
index cc993657d9..9cc6913252 100644
--- a/modules/mcel-tests
+++ b/modules/mcel-tests
@@ -6,6 +6,7 @@ tests/test-mcel-4.sh
 tests/test-mcel-5.sh
 tests/test-mcel.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -15,6 +16,7 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -24,6 +26,7 @@ Makefile.am:
 TESTS += \
   test-mcel-1.sh test-mcel-2.sh test-mcel-3.sh test-mcel-4.sh test-mcel-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/trim-tests b/modules/trim-tests
index 5b04ceb062..8780368f4e 100644
--- a/modules/trim-tests
+++ b/modules/trim-tests
@@ -4,6 +4,7 @@ tests/test-trim2.sh
 tests/test-trim3.sh
 tests/test-trim.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-zh.m4
 m4/codeset.m4
@@ -12,12 +13,14 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 gt_LOCALE_ZH_CN
 
 Makefile.am:
 TESTS += test-trim1.sh test-trim2.sh test-trim3.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_ZH_CN='@LOCALE_ZH_CN@'
 check_PROGRAMS += test-trim
diff --git a/modules/unicodeio-tests b/modules/unicodeio-tests
index 0a7d57bd5c..79ae6ed67d 100644
--- a/modules/unicodeio-tests
+++ b/modules/unicodeio-tests
@@ -4,6 +4,7 @@ tests/test-unicodeio2.sh
 tests/test-unicodeio3.sh
 tests/test-unicodeio.c
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-zh.m4
 m4/codeset.m4
@@ -13,12 +14,14 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR_UTF8
 gt_LOCALE_ZH_CN
 
 Makefile.am:
 TESTS += test-unicodeio1.sh test-unicodeio2.sh test-unicodeio3.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_ZH_CN='@LOCALE_ZH_CN@'
 check_PROGRAMS += test-unicodeio
diff --git a/modules/wcrtomb-tests b/modules/wcrtomb-tests
index 3baa3f30c5..ea8f439d17 100644
--- a/modules/wcrtomb-tests
+++ b/modules/wcrtomb-tests
@@ -11,6 +11,7 @@ tests/test-wcrtomb-w32-8.sh
 tests/test-wcrtomb-w32.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -22,6 +23,7 @@ setlocale
 localcharset
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -34,6 +36,7 @@ TESTS += \
   test-wcrtomb-w32-5.sh test-wcrtomb-w32-6.sh test-wcrtomb-w32-7.sh \
   test-wcrtomb-w32-8.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/wcsnrtombs-tests b/modules/wcsnrtombs-tests
index 04ec77eff6..9b8d9ff0be 100644
--- a/modules/wcsnrtombs-tests
+++ b/modules/wcsnrtombs-tests
@@ -6,6 +6,7 @@ tests/test-wcsnrtombs-5.sh
 tests/test-wcsnrtombs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -15,6 +16,7 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -25,6 +27,7 @@ TESTS += \
   test-wcsnrtombs-2.sh test-wcsnrtombs-3.sh test-wcsnrtombs-4.sh \
   test-wcsnrtombs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/modules/wcsrtombs-tests b/modules/wcsrtombs-tests
index b042a52973..514138efbb 100644
--- a/modules/wcsrtombs-tests
+++ b/modules/wcsrtombs-tests
@@ -6,6 +6,7 @@ tests/test-wcsrtombs-5.sh
 tests/test-wcsrtombs.c
 tests/signature.h
 tests/macros.h
+m4/locale-en.m4
 m4/locale-fr.m4
 m4/locale-ja.m4
 m4/locale-zh.m4
@@ -15,6 +16,7 @@ Depends-on:
 setlocale
 
 configure.ac:
+gt_LOCALE_EN_UTF8
 gt_LOCALE_FR
 gt_LOCALE_FR_UTF8
 gt_LOCALE_JA
@@ -25,6 +27,7 @@ TESTS += \
   test-wcsrtombs-2.sh test-wcsrtombs-3.sh test-wcsrtombs-4.sh \
   test-wcsrtombs-5.sh
 TESTS_ENVIRONMENT += \
+  LOCALE_EN_UTF8='@LOCALE_EN_UTF8@' \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
   LOCALE_JA='@LOCALE_JA@' \
diff --git a/tests/test-btoc32-3.sh b/tests/test-btoc32-3.sh
index 8c6b180369..924f62b491 100755
--- a/tests/test-btoc32-3.sh
+++ b/tests/test-btoc32-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-btoc32${EXEEXT} 3
diff --git a/tests/test-btowc-3.sh b/tests/test-btowc-3.sh
index 4124476564..1d13beafaa 100755
--- a/tests/test-btowc-3.sh
+++ b/tests/test-btowc-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-btowc${EXEEXT} 3
diff --git a/tests/test-c32isalnum.sh b/tests/test-c32isalnum.sh
index df94aaded0..dfc354ca68 100755
--- a/tests/test-c32isalnum.sh
+++ b/tests/test-c32isalnum.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isalnum${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isalpha.sh b/tests/test-c32isalpha.sh
index 11c896fa60..13e82ac629 100755
--- a/tests/test-c32isalpha.sh
+++ b/tests/test-c32isalpha.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isalpha${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isblank.sh b/tests/test-c32isblank.sh
index fe5f9b86bf..695ec4447b 100755
--- a/tests/test-c32isblank.sh
+++ b/tests/test-c32isblank.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isblank${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32iscntrl.sh b/tests/test-c32iscntrl.sh
index b27747c726..00540cfad3 100755
--- a/tests/test-c32iscntrl.sh
+++ b/tests/test-c32iscntrl.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32iscntrl${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isdigit.sh b/tests/test-c32isdigit.sh
index 158d362872..2260c42ad3 100755
--- a/tests/test-c32isdigit.sh
+++ b/tests/test-c32isdigit.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isdigit${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isgraph.sh b/tests/test-c32isgraph.sh
index be760fb2f3..f4c0d43f82 100755
--- a/tests/test-c32isgraph.sh
+++ b/tests/test-c32isgraph.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isgraph${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32islower.sh b/tests/test-c32islower.sh
index f8b9840ce0..31953357e8 100755
--- a/tests/test-c32islower.sh
+++ b/tests/test-c32islower.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32islower${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isprint.sh b/tests/test-c32isprint.sh
index d455413ba3..0689c22820 100755
--- a/tests/test-c32isprint.sh
+++ b/tests/test-c32isprint.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isprint${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32ispunct.sh b/tests/test-c32ispunct.sh
index d818bcf734..7f8ab0b191 100755
--- a/tests/test-c32ispunct.sh
+++ b/tests/test-c32ispunct.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32ispunct${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isspace.sh b/tests/test-c32isspace.sh
index a704d86bfc..a8a2c969b6 100755
--- a/tests/test-c32isspace.sh
+++ b/tests/test-c32isspace.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isspace${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isupper.sh b/tests/test-c32isupper.sh
index ea3efcb845..0c2ff6aaee 100755
--- a/tests/test-c32isupper.sh
+++ b/tests/test-c32isupper.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isupper${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32isxdigit.sh b/tests/test-c32isxdigit.sh
index 48f8efa732..ac99d39c7c 100755
--- a/tests/test-c32isxdigit.sh
+++ b/tests/test-c32isxdigit.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32isxdigit${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32rtomb.sh b/tests/test-c32rtomb.sh
index e5236c976a..4fa2c3ba14 100755
--- a/tests/test-c32rtomb.sh
+++ b/tests/test-c32rtomb.sh
@@ -13,9 +13,16 @@ if test $LOCALE_FR != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32rtomb${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32snrtombs-3.sh b/tests/test-c32snrtombs-3.sh
index 2a7195e4bf..1823ff8a1a 100755
--- a/tests/test-c32snrtombs-3.sh
+++ b/tests/test-c32snrtombs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-c32snrtombs${EXEEXT} 3
diff --git a/tests/test-c32srtombs-3.sh b/tests/test-c32srtombs-3.sh
index 508a81faa3..9e6824f77f 100755
--- a/tests/test-c32srtombs-3.sh
+++ b/tests/test-c32srtombs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-c32srtombs${EXEEXT} 3
diff --git a/tests/test-c32stombs-3.sh b/tests/test-c32stombs-3.sh
index 42a752fb8c..e7c7e1563f 100755
--- a/tests/test-c32stombs-3.sh
+++ b/tests/test-c32stombs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-c32stombs${EXEEXT} 3
diff --git a/tests/test-c32tolower.sh b/tests/test-c32tolower.sh
index 02f3e5f655..b3a17aecfa 100755
--- a/tests/test-c32tolower.sh
+++ b/tests/test-c32tolower.sh
@@ -24,9 +24,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32tolower${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-c32toupper.sh b/tests/test-c32toupper.sh
index 6eed37d908..6797bd2d5f 100755
--- a/tests/test-c32toupper.sh
+++ b/tests/test-c32toupper.sh
@@ -24,9 +24,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-c32toupper${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-fnmatch-3.sh b/tests/test-fnmatch-3.sh
index 7ad5386c8d..bd354f9642 100755
--- a/tests/test-fnmatch-3.sh
+++ b/tests/test-fnmatch-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-fnmatch${EXEEXT} 3
diff --git a/tests/test-iswdigit.sh b/tests/test-iswdigit.sh
index 142a224f08..0af6fa3f2b 100755
--- a/tests/test-iswdigit.sh
+++ b/tests/test-iswdigit.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-iswdigit${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-iswxdigit.sh b/tests/test-iswxdigit.sh
index 9bdaff4ad1..ffaf865379 100755
--- a/tests/test-iswxdigit.sh
+++ b/tests/test-iswxdigit.sh
@@ -21,9 +21,16 @@ if test $LOCALE_JA != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-iswxdigit${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-mbmemcasecmp-3.sh b/tests/test-mbmemcasecmp-3.sh
index ada26e0aa0..8d40f136ad 100755
--- a/tests/test-mbmemcasecmp-3.sh
+++ b/tests/test-mbmemcasecmp-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbmemcasecmp${EXEEXT} 3
diff --git a/tests/test-mbmemcasecoll-3.sh b/tests/test-mbmemcasecoll-3.sh
index ec64dab190..99582d759c 100755
--- a/tests/test-mbmemcasecoll-3.sh
+++ b/tests/test-mbmemcasecoll-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbmemcasecoll${EXEEXT} 3
diff --git a/tests/test-mbrlen-3.sh b/tests/test-mbrlen-3.sh
index 976803ade1..cd044c4305 100755
--- a/tests/test-mbrlen-3.sh
+++ b/tests/test-mbrlen-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbrlen${EXEEXT} 3
diff --git a/tests/test-mbrtoc16-3.sh b/tests/test-mbrtoc16-3.sh
index d4104816ca..743126d071 100755
--- a/tests/test-mbrtoc16-3.sh
+++ b/tests/test-mbrtoc16-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbrtoc16${EXEEXT} 3
diff --git a/tests/test-mbrtoc32-3.sh b/tests/test-mbrtoc32-3.sh
index 082bad849f..2ab4cf950e 100755
--- a/tests/test-mbrtoc32-3.sh
+++ b/tests/test-mbrtoc32-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbrtoc32${EXEEXT} 3
diff --git a/tests/test-mbrtowc-3.sh b/tests/test-mbrtowc-3.sh
index 36b0023cd5..15fd47f38f 100755
--- a/tests/test-mbrtowc-3.sh
+++ b/tests/test-mbrtowc-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbrtowc${EXEEXT} 3
diff --git a/tests/test-mbscasestr2.sh b/tests/test-mbscasestr2.sh
index 3322fb0e26..b7a45d5bb6 100755
--- a/tests/test-mbscasestr2.sh
+++ b/tests/test-mbscasestr2.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbscasestr2${EXEEXT}
diff --git a/tests/test-mbscspn.sh b/tests/test-mbscspn.sh
index 7dd37e3e3c..62ad1c3bc8 100755
--- a/tests/test-mbscspn.sh
+++ b/tests/test-mbscspn.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbscspn${EXEEXT}
diff --git a/tests/test-mbsinit.sh b/tests/test-mbsinit.sh
index 25d4b2e482..448f61b48f 100755
--- a/tests/test-mbsinit.sh
+++ b/tests/test-mbsinit.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsinit${EXEEXT}
diff --git a/tests/test-mbslen.sh b/tests/test-mbslen.sh
index 9ba9f0cbac..4cbd339915 100755
--- a/tests/test-mbslen.sh
+++ b/tests/test-mbslen.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbslen${EXEEXT}
diff --git a/tests/test-mbsnlen.sh b/tests/test-mbsnlen.sh
index 48fa3f2801..47cabbf6d1 100755
--- a/tests/test-mbsnlen.sh
+++ b/tests/test-mbsnlen.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsnlen${EXEEXT}
diff --git a/tests/test-mbsnrtoc32s-3.sh b/tests/test-mbsnrtoc32s-3.sh
index d81bc5c957..9b5ab19018 100755
--- a/tests/test-mbsnrtoc32s-3.sh
+++ b/tests/test-mbsnrtoc32s-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsnrtoc32s${EXEEXT} 3
diff --git a/tests/test-mbsnrtowcs-3.sh b/tests/test-mbsnrtowcs-3.sh
index 7c8317a5f2..17f651fcd5 100755
--- a/tests/test-mbsnrtowcs-3.sh
+++ b/tests/test-mbsnrtowcs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsnrtowcs${EXEEXT} 3
diff --git a/tests/test-mbspbrk.sh b/tests/test-mbspbrk.sh
index 23c422656f..b5ab82728f 100755
--- a/tests/test-mbspbrk.sh
+++ b/tests/test-mbspbrk.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbspbrk${EXEEXT}
diff --git a/tests/test-mbsrtoc32s-3.sh b/tests/test-mbsrtoc32s-3.sh
index 721e8df973..bb9dd9fe74 100755
--- a/tests/test-mbsrtoc32s-3.sh
+++ b/tests/test-mbsrtoc32s-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsrtoc32s${EXEEXT} 3
diff --git a/tests/test-mbsrtowcs-3.sh b/tests/test-mbsrtowcs-3.sh
index 9c7caee5d5..95b50293ef 100755
--- a/tests/test-mbsrtowcs-3.sh
+++ b/tests/test-mbsrtowcs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsrtowcs${EXEEXT} 3
diff --git a/tests/test-mbsspn.sh b/tests/test-mbsspn.sh
index efc344c553..ba0b98bb34 100755
--- a/tests/test-mbsspn.sh
+++ b/tests/test-mbsspn.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsspn${EXEEXT}
diff --git a/tests/test-mbsstr2.sh b/tests/test-mbsstr2.sh
index d1905d61b4..6aeead7705 100755
--- a/tests/test-mbsstr2.sh
+++ b/tests/test-mbsstr2.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbsstr2${EXEEXT}
diff --git a/tests/test-mbstoc32s-3.sh b/tests/test-mbstoc32s-3.sh
index 0dc4d263e9..e1bd9d7f92 100755
--- a/tests/test-mbstoc32s-3.sh
+++ b/tests/test-mbstoc32s-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbstoc32s${EXEEXT} 3
diff --git a/tests/test-mbstowcs-3.sh b/tests/test-mbstowcs-3.sh
index 285605623e..6cb3ad8c61 100755
--- a/tests/test-mbstowcs-3.sh
+++ b/tests/test-mbstowcs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mbstowcs${EXEEXT} 3
diff --git a/tests/test-mcel-3.sh b/tests/test-mcel-3.sh
index a1f21a7a50..3702decec9 100755
--- a/tests/test-mcel-3.sh
+++ b/tests/test-mcel-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-mcel${EXEEXT} 3
diff --git a/tests/test-trim2.sh b/tests/test-trim2.sh
index 1c14bd5d1a..6f22750d21 100755
--- a/tests/test-trim2.sh
+++ b/tests/test-trim2.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-trim${EXEEXT} 2
diff --git a/tests/test-unicodeio2.sh b/tests/test-unicodeio2.sh
index f0f197181b..d03bee6b9a 100755
--- a/tests/test-unicodeio2.sh
+++ b/tests/test-unicodeio2.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-unicodeio${EXEEXT} 2
diff --git a/tests/test-wcrtomb.sh b/tests/test-wcrtomb.sh
index b4604612bc..c9980620da 100755
--- a/tests/test-wcrtomb.sh
+++ b/tests/test-wcrtomb.sh
@@ -13,9 +13,16 @@ if test $LOCALE_FR != none; then
 fi
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 != none; then
-  LC_ALL=$LOCALE_FR_UTF8 \
+if test "$LOCALE_EN_UTF8" != none || test $LOCALE_FR_UTF8 != none; then
+  # It's sufficient to test in one of the two locales.
+  if test $LOCALE_FR_UTF8 != none; then
+    testlocale=$LOCALE_FR_UTF8
+  else
+    testlocale="$LOCALE_EN_UTF8"
+  fi
+  LC_ALL="$testlocale" \
   ${CHECKER} ./test-wcrtomb${EXEEXT} 3 \
   || exit 1
 fi
diff --git a/tests/test-wcsnrtombs-3.sh b/tests/test-wcsnrtombs-3.sh
index 414a43ec89..b87e50f496 100755
--- a/tests/test-wcsnrtombs-3.sh
+++ b/tests/test-wcsnrtombs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-wcsnrtombs${EXEEXT} 3
diff --git a/tests/test-wcsrtombs-3.sh b/tests/test-wcsrtombs-3.sh
index 477a6b7be6..11eb424919 100755
--- a/tests/test-wcsrtombs-3.sh
+++ b/tests/test-wcsrtombs-3.sh
@@ -1,15 +1,23 @@
 #!/bin/sh
 
 # Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_EN_UTF8=en_US.UTF-8}"
 : "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+if test "$LOCALE_EN_UTF8" = none && test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no english or french Unicode locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no english or french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+# It's sufficient to test in one of the two locales.
+if test $LOCALE_FR_UTF8 != none; then
+  testlocale=$LOCALE_FR_UTF8
+else
+  testlocale="$LOCALE_EN_UTF8"
+fi
+
+LC_ALL="$testlocale" \
 ${CHECKER} ./test-wcsrtombs${EXEEXT} 3






reply via email to

[Prev in Thread] Current Thread [Next in Thread]