Skip to content

Commit 4d5595f

Browse files
authored
add tests for get_language_code and getting default language (#142)
Signed-off-by: Matthew Peveler <[email protected]>
1 parent 14b73ea commit 4d5595f

File tree

2 files changed

+58
-23
lines changed

2 files changed

+58
-23
lines changed

tests/test_tldr.py

+28
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,31 @@ def test_error_message():
3131
print("Test {}".format(pytest_wrapped_e))
3232
assert pytest_wrapped_e.type == SystemExit
3333
assert str(pytest_wrapped_e.value) == correct_output
34+
35+
36+
@pytest.mark.parametrize("language,expected", [
37+
("en_US.UTF-8", "en"),
38+
("en_US", "en"),
39+
("en", "en"),
40+
("pt_BR", "pt_BR"),
41+
("pt_PT", "pt_PT"),
42+
("zh_TW", "zh_TW"),
43+
("pt", "pt_PT")
44+
])
45+
def test_get_language_code(language, expected):
46+
assert tldr.get_language_code(language) == expected
47+
48+
49+
@pytest.mark.parametrize("language,expected", [
50+
("en_US.UTF-8", "en"),
51+
("POSIX", None),
52+
("C", None)
53+
])
54+
def test_get_default_language(language, expected, monkeypatch):
55+
monkeypatch.setenv("LANG", language)
56+
assert tldr.get_default_language() == expected
57+
58+
59+
def test_get_default_language_unset(monkeypatch):
60+
monkeypatch.delenv("LANG", raising=False)
61+
assert tldr.get_default_language() is None

tldr.py

+30-23
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,6 @@
2929
'https://tldr-pages.github.io/assets/tldr.zip'
3030
)
3131

32-
33-
def get_language_code(language):
34-
language = language.split('.')[0]
35-
if language in ['pt_PT', 'pt_BR', 'zh_TW']:
36-
return language
37-
elif language == "pt":
38-
return "pt_PT"
39-
return language.split('_')[0]
40-
41-
42-
DEFAULT_LANG = get_language_code(
43-
os.environ.get(
44-
'LANG',
45-
'C'
46-
))
47-
48-
if DEFAULT_LANG == 'C' or DEFAULT_LANG == 'POSIX':
49-
DEFAULT_LANG = None
50-
5132
USE_CACHE = int(os.environ.get('TLDR_CACHE_ENABLED', '1')) > 0
5233
MAX_CACHE_AGE = int(os.environ.get('TLDR_CACHE_MAX_AGE', 24))
5334

@@ -65,6 +46,29 @@ def get_language_code(language):
6546
}
6647

6748

49+
def get_language_code(language):
50+
language = language.split('.')[0]
51+
if language in ['pt_PT', 'pt_BR', 'zh_TW']:
52+
return language
53+
elif language == "pt":
54+
return "pt_PT"
55+
return language.split('_')[0]
56+
57+
58+
def get_default_language():
59+
default_lang = get_language_code(
60+
os.environ.get(
61+
'LANG',
62+
'C'
63+
)
64+
)
65+
66+
if default_lang == 'C' or default_lang == 'POSIX':
67+
default_lang = None
68+
69+
return default_lang
70+
71+
6872
def get_cache_dir():
6973
if not os.environ.get('XDG_CACHE_HOME', False):
7074
if not os.environ.get('HOME', False):
@@ -175,9 +179,11 @@ def get_language_list():
175179
get_language_code,
176180
filter(lambda x: not (x == 'C' or x == 'POSIX' or x == ''), languages)
177181
))
178-
if DEFAULT_LANG is not None:
179-
if DEFAULT_LANG not in languages:
180-
languages.append(DEFAULT_LANG)
182+
183+
default_lang = get_default_language()
184+
185+
if default_lang is not None and default_lang not in languages:
186+
languages.append(default_lang)
181187
else:
182188
languages = []
183189
if 'en' not in languages:
@@ -306,7 +312,8 @@ def output(page):
306312

307313
def update_cache(language=None):
308314
if language is None:
309-
language = DEFAULT_LANG if DEFAULT_LANG is not None else 'en'
315+
default_lang = get_default_language()
316+
language = default_lang if default_lang is not None else 'en'
310317
elif isinstance(language, list):
311318
language = language[0]
312319
try:

0 commit comments

Comments
 (0)