summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2020-01-22 12:13:27 +0000
committerReuben Thomas <rrt@sc3d.org>2020-01-22 12:15:21 +0000
commit4893214004c5a0b3e4cfcdeb967b9f9052056ccc (patch)
tree8d4ee31d6869f69c4185196bf44b31d47ce4030f /tests
parente550f8bbdca948864031c71e52a139f39b874a94 (diff)
downloadenchant-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.cpp45
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)