tests: Specify locales' charsets explicitly, fixing FTBFS with new glibc
authorSimon McVittie <smcv@debian.org>
Thu, 19 Aug 2021 20:54:32 +0000 (21:54 +0100)
committerSimon McVittie <smcv@debian.org>
Fri, 20 Aug 2021 10:13:46 +0000 (11:13 +0100)
glibc 2.31-14 dropped support for all non-UTF-8 locales, so we can't
use /usr/share/i18n/SUPPORTED to choose a suitable charset any more.

debian/run-tests.sh
debian/tests/installed-tests
debian/tests/installed-tests-flaky
debian/tests/run-with-locales

index e0ece616c2bab8181005ac43032b432d2a8a4b28..75eac128cf0db23db2a21dcddf59c67222d16d8d 100755 (executable)
@@ -53,7 +53,7 @@ env \
                 --generate de_DE.UTF-8 \
                 --generate en_GB.UTF-8 \
                 --generate en_US.UTF-8 \
-                --generate sv_SE \
+                --generate sv_SE=ISO-8859-1 \
                 -- \
                     meson test -C "$BUILDDIR" \
                     --print-errorlogs \
index dac000d1338a5a69d2c098c50a2bdc0f705d6487..954d02d8ddaadd810798ec4bd6b10d54bc50cad4 100755 (executable)
@@ -22,7 +22,7 @@ debian/tests/run-with-locales \
     --generate de_DE.UTF-8 \
     --generate en_GB.UTF-8 \
     --generate en_US.UTF-8 \
-    --generate sv_SE \
+    --generate sv_SE=ISO-8859-1 \
     -- \
 gnome-desktop-testing-runner \
 --report-directory="$AUTOPKGTEST_ARTIFACTS" \
index 47b39cc17965607e1c78ed7f9baf29d8cb17a646..230add64ef7ab69d32f0286625d3f13ee785a3eb 100755 (executable)
@@ -16,7 +16,7 @@ debian/tests/run-with-locales \
     --generate de_DE.UTF-8 \
     --generate en_GB.UTF-8 \
     --generate en_US.UTF-8 \
-    --generate sv_SE \
+    --generate sv_SE=ISO-8859-1 \
     -- \
 debian/tests/run-with-display $GDK_BACKEND \
 gnome-desktop-testing-runner \
index a63d22bdeb2ae7337d746302bc3687adb86430f6..29264ef759113a39d89428d88fd4f184b97c99c3 100755 (executable)
@@ -3,9 +3,10 @@
 # Run a wrapped command with at least the requested locales available.
 # Requires a dependency on locales | locales-all.
 # The requested locales must be of the form foo_FOO.utf8, or special-cased
-# in generate().
+# in generate(), or listed in /usr/share/i18n/SUPPORTED, or specify the
+# locale in the form locale=charset.
 #
-# Copyright 2016-2020 Simon McVittie
+# Copyright 2016-2021 Simon McVittie
 # Copyright 2017-2018 Collabora Ltd.
 #
 # SPDX-License-Identifier: MIT
@@ -57,13 +58,18 @@ unset getopt_temp
 
 generate () {
     local locale="$1"
-    local charset
+    local charset=""
     local source
     local output
 
     echo "$me: $locale..." >&2
 
     case "$locale" in
+        (*=*)
+            source="${locale%=*}"
+            output="$source"
+            ;;
+
         (*.*)
             source="${locale%.*}"
             output="$source.$(
@@ -84,18 +90,27 @@ generate () {
         return
     fi
 
+    if ! [ -d /usr/share/i18n/charmaps ]; then
+        echo "$me: $locale not in locales-all and /usr/share/i18n/charmaps not found" >&2
+        return
+    fi
+
     case "$locale" in
-        (*.utf8)
+        (*=*)
+            charset="${locale##*=}"
+            ;;
+
+        (*.utf8 | *.UTF-8)
             charset="UTF-8"
             ;;
 
-        (*)
-            charset=$(sed -ne "s/^$locale //p" /usr/share/i18n/SUPPORTED)
+        (*.*)
+            charset="${locale##*.}"
             ;;
     esac
 
     if [ -z "$charset" ]; then
-        echo "$me: $locale not found in /usr/share/i18n/SUPPORTED" >&2
+        echo "$me: $locale charset not known" >&2
         exit 1
     fi