Skip to content

Commit

Permalink
Windows test-fix
Browse files Browse the repository at this point in the history
  • Loading branch information
caronc committed Aug 20, 2023
1 parent 1b1d116 commit e76598f
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 13 deletions.
22 changes: 12 additions & 10 deletions apprise/AppriseLocale.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,17 @@ def detect_language(lang=None, detect_fallback=True):
# no detection enabled; we're done
return None

# Posix lookup
lookup = os.environ.get
localename = None
for variable in ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'):
localename = lookup(variable, None)
if localename:
result = AppriseLocale._local_re.match(localename)
if result and result.group('lang'):
return result.group('lang').lower()

# Windows handling
if hasattr(ctypes, 'windll'):
windll = ctypes.windll.kernel32
try:
Expand All @@ -216,16 +227,7 @@ def detect_language(lang=None, detect_fallback=True):
# Fallback to posix detection
pass

# Posix lookup
lookup = os.environ.get
localename = None
for variable in ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'):
localename = lookup(variable, None)
if localename:
result = AppriseLocale._local_re.match(localename)
if result and result.group('lang'):
return result.group('lang').lower()

# Linux Handling
try:
# Acquire our locale
lang = locale.getlocale()[0]
Expand Down
11 changes: 8 additions & 3 deletions test/test_locale.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ def test_detect_language_windows_users():

if hasattr(ctypes, 'windll'):
from ctypes import windll

else:
windll = mock.Mock()
# 4105 = en_CA
Expand All @@ -166,8 +167,7 @@ def test_detect_language_windows_users():

def test_detect_language_using_env():
"""
When enabling CI testing on Windows, those tests did not produce the
correct results. They may want to be reviewed.
Test the reading of information from an environment variable
"""

# The below accesses the windows fallback code and fail
Expand Down Expand Up @@ -203,7 +203,12 @@ def test_detect_language_locale(mock_getlocale):
"""
# Handle case where getlocale() can't be detected
mock_getlocale.return_value = None
assert AppriseLocale.AppriseLocale.detect_language() is None
with environ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'):
assert AppriseLocale.AppriseLocale.detect_language() is None

mock_getlocale.return_value = (None, None)
with environ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'):
assert AppriseLocale.AppriseLocale.detect_language() is None

# if detect_language and windows env fail us, then we don't
# set up a default language on first load
Expand Down

0 comments on commit e76598f

Please sign in to comment.