def test_set_locale(): if all(x is None for x in _current_locale): # Not sure why, but on some Travis runs with pytest, # getlocale() returned (None, None). pytest.skip("Current locale is not set.") locale_override = os.environ.get("LOCALE_OVERRIDE", None) if locale_override is None: lang, enc = "it_CH", "UTF-8" elif locale_override == "C": lang, enc = "en_US", "ascii" else: lang, enc = locale_override.split(".") enc = codecs.lookup(enc).name new_locale = lang, enc if not can_set_locale(new_locale): msg = "unsupported locale setting" with pytest.raises(locale.Error, match=msg): with set_locale(new_locale): pass else: with set_locale(new_locale) as normalized_locale: new_lang, new_enc = normalized_locale.split(".") new_enc = codecs.lookup(enc).name normalized_locale = new_lang, new_enc assert normalized_locale == new_locale # Once we exit the "with" statement, locale should be back to what it was. current_locale = locale.getlocale() assert current_locale == _current_locale
def test_set_locale(lang, enc): if all(x is None for x in _current_locale): # Not sure why, but on some Travis runs with pytest, # getlocale() returned (None, None). pytest.skip("Current locale is not set.") enc = codecs.lookup(enc).name new_locale = lang, enc if not can_set_locale(new_locale): msg = "unsupported locale setting" with pytest.raises(locale.Error, match=msg): with set_locale(new_locale): pass else: with set_locale(new_locale) as normalized_locale: new_lang, new_enc = normalized_locale.split(".") new_enc = codecs.lookup(enc).name normalized_locale = new_lang, new_enc assert normalized_locale == new_locale # Once we exit the "with" statement, locale should be back to what it was. current_locale = locale.getlocale() assert current_locale == _current_locale
def test_can_set_locale_invalid_get(monkeypatch): # see GH#22129 # In some cases, an invalid locale can be set, # but a subsequent getlocale() raises a ValueError. def mock_get_locale(): raise ValueError() with monkeypatch.context() as m: m.setData(locale, "getlocale", mock_get_locale) assert not can_set_locale("")
def test_can_set_locale_invalid_get(monkeypatch): # see GH#22129 # In some cases, an invalid locale can be set, # but a subsequent getlocale() raises a ValueError. def mock_get_locale(): raise ValueError() with monkeypatch.context() as m: m.setattr(locale, "getlocale", mock_get_locale) assert not can_set_locale("")
def test_set_locale(lang, enc): before_locale = _get_current_locale() enc = codecs.lookup(enc).name new_locale = lang, enc if not can_set_locale(new_locale): msg = "unsupported locale setting" with pytest.raises(locale.Error, match=msg): with set_locale(new_locale): pass else: with set_locale(new_locale) as normalized_locale: new_lang, new_enc = normalized_locale.split(".") new_enc = codecs.lookup(enc).name normalized_locale = new_lang, new_enc assert normalized_locale == new_locale # Once we exit the "with" statement, locale should be back to what it was. after_locale = _get_current_locale() assert before_locale == after_locale
def test_can_set_locale_invalid_set(): # Cannot set an invalid locale. assert not can_set_locale("non-existent_locale")
def test_can_set_locale_valid_set(): # Can set the default locale. assert can_set_locale("")
def test_can_set_locale_no_leak(lang, enc, lc_var): # Test that can_set_locale does not leak even when returning False. See GH#46595 before_locale = _get_current_locale(lc_var) can_set_locale((lang, enc), locale.LC_ALL) after_locale = _get_current_locale(lc_var) assert before_locale == after_locale
def test_can_set_locale_invalid_set(lc_var): # Cannot set an invalid locale. before_locale = _get_current_locale(lc_var) assert not can_set_locale("non-existent_locale", lc_var=lc_var) after_locale = _get_current_locale(lc_var) assert before_locale == after_locale
def test_can_set_locale_valid_set(lc_var): # Can set the default locale. before_locale = _get_current_locale(lc_var) assert can_set_locale("", lc_var=lc_var) after_locale = _get_current_locale(lc_var) assert before_locale == after_locale
def test_can_set_current_locale(lc_var): # Can set the current locale before_locale = _get_current_locale(lc_var) assert can_set_locale(before_locale, lc_var=lc_var) after_locale = _get_current_locale(lc_var) assert before_locale == after_locale