1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-03-19 00:58:56 +00:00
thefuck/tests/rules/test_cat_dir.py
Scott Colby 23b27c16dc First attempt at adding internationalization to the cat error message detection.
Fix the tests for inside virtualenvs and add warning if localization appears impossible.

Remove the language warnings for en_US locales and make sure they appear for others.
2018-07-10 14:03:58 -07:00

73 lines
1.8 KiB
Python

import gettext
import os
import warnings
import pytest
from thefuck.rules.cat_dir import match, get_new_command
from thefuck.types import Command
# patch this so the libc locale is available in the testing virtualenv
gettext._default_localedir = '/usr/share/locale'
lang_vars = ['LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG']
@pytest.fixture(params=['en_US.UTF-8', 'fr_FR.UTF-8', 'en_US.ISO8859-1', 'fr_FR.ISO8859-1'])
def language(request):
return request.param
@pytest.fixture(params=[''] + lang_vars)
def environment(request, language):
orig_env = os.environ.copy()
# empty the locale environment variables
for lang_var in lang_vars:
os.environ.pop(lang_var, None)
if request.param:
os.environ[request.param] = language
yield
os.environ = orig_env
@pytest.fixture
def eisdir(environment):
eisdir = gettext.translation('libc', fallback=True).gettext('Is a directory')
return eisdir
@pytest.fixture(params=['foo', '/foo/var', 'cat/'])
def cat_command(request, eisdir):
return (
Command('cat %s' % request.param, 'cat: %s: %s\n' % (request.param, eisdir)),
'ls %s' % request.param
)
def test_localization_possible(language):
if not language.startswith('en_US'):
try:
gettext.translation('libc', languages=[language])
except FileNotFoundError as e:
warnings.warn("No '%s' translation file found for language '%s'; the localization tests for `cat_dir` will be ineffective" % (e.filename, language))
def test_match(cat_command):
assert match(cat_command[0])
@pytest.mark.parametrize('command', [
Command('cat foo', 'foo bar baz'),
Command('cat foo bar', 'foo bar baz'),
])
def test_not_match(command):
assert not match(command)
def test_get_new_command(cat_command):
assert get_new_command(cat_command[0]) == cat_command[1]