systemd/debian/tests/localed-locale
Matthias Klumpp 63f22a7a8d Configure localed to run locale-gen to generate missing locale
This applies an (upstreamed) patch to permit systemd-localed to run
locale-gen to generate missing locale when requested to switch the
system locale.
This makes localectl usable on Debian for changing locale without
breaking system localization or even prevent certain applications from
running at all after switching to a non-generated locale.
2021-01-18 03:05:05 +01:00

64 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
set -e
. `dirname $0`/assert.sh
if [ -n "$TEST_UPSTREAM" ]; then
LOCALE_CONF=/etc/locale.conf
else
LOCALE_CONF=/etc/default/locale
fi
if [ -f "$LOCALE_CONF" ]; then
cp "$LOCALE_CONF" "${LOCALE_CONF}.orig"
fi
# ensure tested locale exist
mv /etc/locale.gen /etc/locale.gen.orig
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen en_US.UTF-8
if ! [ -e /etc/default/keyboard ]; then
/bin/echo -e 'XKBMODEL=us\nXKBLAYOUT=pc105' > /etc/default/keyboard
fi
# should activate daemon and work
assert_in "System Locale:" "`localectl --no-pager`"
# change locale
assert_eq "`localectl --no-pager set-locale LANG=C LC_CTYPE=en_US.UTF-8 2>&1`" ""
sync
assert_eq "`cat $LOCALE_CONF`" "LANG=C
LC_CTYPE=en_US.UTF-8"
if [ -z "$TEST_UPSTREAM" ]; then
! [ -f /etc/locale.conf ]
fi
STATUS=`localectl`
assert_in "System Locale: LANG=C" "$STATUS"
assert_in "LC_CTYPE=en_US.UTF-8" "$STATUS"
# test if localed auto-runs locale-gen
# ensure tested locale does not exist
assert_rc 1 validlocale de_DE.UTF-8 2>&1
# change locale
assert_eq "`localectl --no-pager set-locale de_DE.UTF-8 2>&1`" ""
sync
assert_eq "`cat $LOCALE_CONF`" "LANG=de_DE.UTF-8
LC_CTYPE=en_US.UTF-8"
# ensure tested locale exists and works now
assert_rc 0 validlocale de_DE.UTF-8 2>&1
# reset locale to original
if [ -f "${LOCALE_CONF}.orig" ]; then
mv "${LOCALE_CONF}.orig" "$LOCALE_CONF"
else
rm "$LOCALE_CONF"
fi
mv /etc/locale.gen.orig /etc/locale.gen
locale-gen