summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2020-01-24 11:03:30 +0000
committerGitHub <noreply@github.com>2020-01-24 11:03:30 +0000
commit25f342b69babf53462d49d05245df75f66abcaa7 (patch)
treee646755aa59be251ef666032fc4adb30822719a7
parente550f8bbdca948864031c71e52a139f39b874a94 (diff)
parent74ffd2b15233f8a35d4ed36754b5a088169ed640 (diff)
downloadenchant-25f342b69babf53462d49d05245df75f66abcaa7.tar.gz
Merge pull request #232 from rrthomas/master
Provider tests: use user’s default language first if possible (fix #231)
-rw-r--r--.travis.yml1
-rw-r--r--tests/enchant_providers/Dictionary/dictionary_check.cpp2
-rw-r--r--tests/enchant_providers/Dictionary/dictionary_suggest.cpp2
-rw-r--r--tests/enchant_providers/unittest_enchant_providers.h14
-rw-r--r--tests/provider/enchant_provider_get_user_language_tests.cpp45
5 files changed, 46 insertions, 18 deletions
diff --git a/.travis.yml b/.travis.yml
index 80b4de8..5664508 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -40,3 +40,4 @@ script:
- ./configure --enable-relocatable --with-zemberek=check "${CONFIGURE_ARGS[@]}"
- make
- make distcheck
+ - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo locale-gen fr_FR.UTF-8; env LANG=fr_FR.UTF-8 make check ; fi
diff --git a/tests/enchant_providers/Dictionary/dictionary_check.cpp b/tests/enchant_providers/Dictionary/dictionary_check.cpp
index 754beee..1ea5087 100644
--- a/tests/enchant_providers/Dictionary/dictionary_check.cpp
+++ b/tests/enchant_providers/Dictionary/dictionary_check.cpp
@@ -36,7 +36,7 @@ struct DictionaryCheck_TestFixture : Provider_TestFixture
//Setup
DictionaryCheck_TestFixture():_dict(NULL)
{
- _dict = GetFirstAvailableDictionary();
+ _dict = GetDefaultDictionary();
/* FIXME: hspell does not consider non-Hebrew letters to be valid letters */
if (_dict) {
_provider_name = _provider->identify(_provider);
diff --git a/tests/enchant_providers/Dictionary/dictionary_suggest.cpp b/tests/enchant_providers/Dictionary/dictionary_suggest.cpp
index 0a1347a..1c6fed9 100644
--- a/tests/enchant_providers/Dictionary/dictionary_suggest.cpp
+++ b/tests/enchant_providers/Dictionary/dictionary_suggest.cpp
@@ -32,7 +32,7 @@ struct DictionarySuggest_TestFixture : Provider_TestFixture
//Setup
DictionarySuggest_TestFixture():_dict(NULL)
{
- _dict = GetFirstAvailableDictionary();
+ _dict = GetDefaultDictionary();
}
//Teardown
diff --git a/tests/enchant_providers/unittest_enchant_providers.h b/tests/enchant_providers/unittest_enchant_providers.h
index dd804e7..5fd2416 100644
--- a/tests/enchant_providers/unittest_enchant_providers.h
+++ b/tests/enchant_providers/unittest_enchant_providers.h
@@ -63,12 +63,20 @@ struct Provider_TestFixture
return ws;
}
- EnchantDict* GetFirstAvailableDictionary()
+ EnchantDict* GetDefaultDictionary()
{
EnchantDict* dict=NULL;
- // get the first dictionary listed as being available
- if(_provider->list_dicts && _provider->request_dict)
+ // Try getting dictionary for user's default language
+ char *lang = enchant_get_user_language();
+ if (_provider->request_dict)
+ {
+ dict = (*_provider->request_dict) (_provider, lang);
+ }
+ g_free (lang);
+
+ // If not available, get the first dictionary listed as being available
+ if (!dict && _provider->list_dicts && _provider->request_dict)
{
size_t n_dicts;
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)