diff options
author | Reuben Thomas <rrt@sc3d.org> | 2020-01-22 12:13:27 +0000 |
---|---|---|
committer | Reuben Thomas <rrt@sc3d.org> | 2020-01-22 12:15:21 +0000 |
commit | 4893214004c5a0b3e4cfcdeb967b9f9052056ccc (patch) | |
tree | 8d4ee31d6869f69c4185196bf44b31d47ce4030f /tests | |
parent | e550f8bbdca948864031c71e52a139f39b874a94 (diff) | |
download | enchant-4893214004c5a0b3e4cfcdeb967b9f9052056ccc.tar.gz |
enchant_provider_get_user_language_tests.cpp: fix for non-default LANG
In test EnchantGetUserLanguage_FromLangEnvironmentVariable, explicitly unset
LANG before setting the locale, so that enchant_get_user_language does not
use any LANG setting to override the locale.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/provider/enchant_provider_get_user_language_tests.cpp | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/tests/provider/enchant_provider_get_user_language_tests.cpp b/tests/provider/enchant_provider_get_user_language_tests.cpp index cf3de52..bae084d 100644 --- a/tests/provider/enchant_provider_get_user_language_tests.cpp +++ b/tests/provider/enchant_provider_get_user_language_tests.cpp @@ -25,6 +25,31 @@ #include <string.h>
/////////////////////////////////////////////////////////////////////////////
+// Utility functions
+std::string origLangEnv;
+bool hasLangEnv;
+
+static void SaveLangEnv()
+{
+ hasLangEnv = (g_getenv("LANG") != NULL);
+ if(hasLangEnv)
+ {
+ origLangEnv = std::string(g_getenv("LANG"));
+ }
+}
+
+static void RestoreLangEnv()
+{
+ if(hasLangEnv)
+ {
+ g_setenv("LANG", origLangEnv.c_str(), TRUE);
+ }
+ else{
+ g_unsetenv("LANG");
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////
// Test Normal Operation
TEST(EnchantGetUserLanguage)
{
@@ -35,12 +60,7 @@ TEST(EnchantGetUserLanguage) TEST(EnchantGetUserLanguage_FromLangEnvironmentVariable)
{
- std::string origLangEnv;
- bool hasLangEnv = (g_getenv("LANG") != NULL);
- if(hasLangEnv)
- {
- origLangEnv = std::string(g_getenv("LANG"));
- }
+ SaveLangEnv();
g_setenv("LANG", "qaa", TRUE);
char* userLanguage = enchant_get_user_language();
@@ -49,17 +69,14 @@ TEST(EnchantGetUserLanguage_FromLangEnvironmentVariable) g_free(userLanguage);
- if(hasLangEnv)
- {
- g_setenv("LANG", origLangEnv.c_str(), TRUE);
- }
- else{
- g_unsetenv("LANG");
- }
+ RestoreLangEnv();
}
static void SetLocaleAndCheckLanguage(const char *locale, const char *language)
{
+ SaveLangEnv();
+ g_unsetenv("LANG"); // Ensure LANG does not override locale for enchant_get_user_language
+
std::string origLocale(setlocale (LC_ALL, NULL));
setlocale (LC_ALL, locale);
@@ -76,6 +93,8 @@ static void SetLocaleAndCheckLanguage(const char *locale, const char *language) g_free(userLanguage);
setlocale (LC_ALL, origLocale.c_str());
+
+ RestoreLangEnv();
}
TEST(EnchantGetUserLanguage_LocaleIsC_LocalIsEn)
|