tests: Set both environment variable and locale when running tests

Non-glibc gettext implementation seems to decide the language from
LC_MESSAGES environment variable instead of LC_MESSAGES locale, so
we should set both environment variable and locale when running tests
which need translation from specific languages.
This commit is contained in:
Ting-Wei Lan 2018-05-26 01:26:43 +08:00
parent 313a0fffe5
commit 6f2b3503a5
3 changed files with 11 additions and 0 deletions

View File

@ -972,6 +972,8 @@ test_api (void)
int int
main (int argc, char **argv) main (int argc, char **argv)
{ {
g_setenv ("LC_ALL", "C", TRUE);
g_test_init (&argc, &argv, NULL); g_test_init (&argc, &argv, NULL);
g_test_dbus_unset (); g_test_dbus_unset ();

View File

@ -1085,6 +1085,7 @@ int
main (int argc, main (int argc,
char *argv[]) char *argv[])
{ {
g_setenv ("LC_ALL", "C", TRUE);
setlocale (LC_ALL, "C"); setlocale (LC_ALL, "C");
g_test_init (&argc, &argv, NULL); g_test_init (&argc, &argv, NULL);

View File

@ -741,14 +741,17 @@ test_l10n (void)
settings = g_settings_new ("org.gtk.test.localized"); settings = g_settings_new ("org.gtk.test.localized");
g_setenv ("LC_MESSAGES", "C", TRUE);
setlocale (LC_MESSAGES, "C"); setlocale (LC_MESSAGES, "C");
str = g_settings_get_string (settings, "error-message"); str = g_settings_get_string (settings, "error-message");
g_setenv ("LC_MESSAGES", locale, TRUE);
setlocale (LC_MESSAGES, locale); setlocale (LC_MESSAGES, locale);
g_assert_cmpstr (str, ==, "Unnamed"); g_assert_cmpstr (str, ==, "Unnamed");
g_free (str); g_free (str);
str = NULL; str = NULL;
g_setenv ("LC_MESSAGES", "de_DE.UTF-8", TRUE);
setlocale (LC_MESSAGES, "de_DE.UTF-8"); setlocale (LC_MESSAGES, "de_DE.UTF-8");
/* Only do the test if translation is actually working... */ /* Only do the test if translation is actually working... */
if (g_str_equal (dgettext ("test", "\"Unnamed\""), "\"Unbenannt\"")) if (g_str_equal (dgettext ("test", "\"Unnamed\""), "\"Unbenannt\""))
@ -762,6 +765,7 @@ test_l10n (void)
else else
g_printerr ("warning: translation is not working... skipping test. "); g_printerr ("warning: translation is not working... skipping test. ");
g_setenv ("LC_MESSAGES", locale, TRUE);
setlocale (LC_MESSAGES, locale); setlocale (LC_MESSAGES, locale);
g_free (locale); g_free (locale);
g_object_unref (settings); g_object_unref (settings);
@ -788,14 +792,17 @@ test_l10n_context (void)
settings = g_settings_new ("org.gtk.test.localized"); settings = g_settings_new ("org.gtk.test.localized");
g_setenv ("LC_MESSAGES", "C", TRUE);
setlocale (LC_MESSAGES, "C"); setlocale (LC_MESSAGES, "C");
g_settings_get (settings, "backspace", "s", &str); g_settings_get (settings, "backspace", "s", &str);
g_setenv ("LC_MESSAGES", locale, TRUE);
setlocale (LC_MESSAGES, locale); setlocale (LC_MESSAGES, locale);
g_assert_cmpstr (str, ==, "BackSpace"); g_assert_cmpstr (str, ==, "BackSpace");
g_free (str); g_free (str);
str = NULL; str = NULL;
g_setenv ("LC_MESSAGES", "de_DE.UTF-8", TRUE);
setlocale (LC_MESSAGES, "de_DE.UTF-8"); setlocale (LC_MESSAGES, "de_DE.UTF-8");
/* Only do the test if translation is actually working... */ /* Only do the test if translation is actually working... */
if (g_str_equal (dgettext ("test", "\"Unnamed\""), "\"Unbenannt\"")) if (g_str_equal (dgettext ("test", "\"Unnamed\""), "\"Unbenannt\""))
@ -809,6 +816,7 @@ test_l10n_context (void)
else else
g_printerr ("warning: translation is not working... skipping test. "); g_printerr ("warning: translation is not working... skipping test. ");
g_setenv ("LC_MESSAGES", locale, TRUE);
setlocale (LC_MESSAGES, locale); setlocale (LC_MESSAGES, locale);
g_free (locale); g_free (locale);
g_object_unref (settings); g_object_unref (settings);