diff --git a/tests/TODO b/tests/TODO.txt similarity index 94% rename from tests/TODO rename to tests/TODO.txt index d34b7c99c..538e8537b 100644 --- a/tests/TODO +++ b/tests/TODO.txt @@ -17,6 +17,10 @@ test_aliases.py test_builtins.py +---------------- +- Env fixture + + test_contexts.py test_dirstack.py test_environ.py diff --git a/tests/test_builtins.py b/tests/test_builtins.py index ab7aabd15..11f2e6996 100644 --- a/tests/test_builtins.py +++ b/tests/test_builtins.py @@ -11,9 +11,11 @@ from xonsh.built_ins import reglob, pathsearch, helper, superhelper, \ ensure_list_of_strs, list_of_strs_or_callables, regexsearch, \ globsearch from xonsh.environ import Env -from xonsh.tools import ON_WINDOWS -from tools import mock_xonsh_env +from tools import skip_if_on_windows + + +HOME_PATH = os.path.expanduser('~') def test_reglob_tests(): @@ -21,77 +23,72 @@ def test_reglob_tests(): for f in testfiles: assert (f.startswith('test_')) -@pytest.mark.skipif(ON_WINDOWS, reason='Unix stuff') -def test_repath_backslash(): - home = os.path.expanduser('~') - built_ins.ENV = Env(HOME=home) - with mock_xonsh_env(built_ins.ENV): - exp = os.listdir(home) - exp = {p for p in exp if re.match(r'\w\w.*', p)} - exp = {os.path.join(home, p) for p in exp} - obs = set(pathsearch(regexsearch, r'~/\w\w.*')) - assert exp == obs +@pytest.fixture +def env(): + e = Env(HOME=os.path.expanduser('~')) + built_ins.ENV = e + return e -@pytest.mark.skipif(ON_WINDOWS, reason='Unix stuff') -def test_repath_home_itself(): - exp = os.path.expanduser('~') - built_ins.ENV = Env(HOME=exp) - with mock_xonsh_env(built_ins.ENV): - obs = pathsearch(regexsearch, '~') - assert 1 == len(obs) - assert exp == obs[0] -@pytest.mark.skipif(ON_WINDOWS, reason='Unix stuff') -def test_repath_home_contents(): - home = os.path.expanduser('~') - built_ins.ENV = Env(HOME=home) - with mock_xonsh_env(built_ins.ENV): - exp = os.listdir(home) - exp = {os.path.join(home, p) for p in exp} - obs = set(pathsearch(regexsearch, '~/.*')) - assert exp == obs +@skip_if_on_windows +@pytest.mark.parametrize('xenv', [Env(HOME=HOME_PATH)]) +def test_repath_backslash(xonsh_env): + exp = os.listdir(HOME_PATH) + exp = {p for p in exp if re.match(r'\w\w.*', p)} + exp = {os.path.join(HOME_PATH, p) for p in exp} + obs = set(pathsearch(regexsearch, r'~/\w\w.*')) + assert exp == obs -@pytest.mark.skipif(ON_WINDOWS, reason='Unix stuff') -def test_repath_home_var(): - exp = os.path.expanduser('~') - built_ins.ENV = Env(HOME=exp) - with mock_xonsh_env(built_ins.ENV): - obs = pathsearch(regexsearch, '$HOME') - assert 1 == len(obs) - assert exp == obs[0] +@skip_if_on_windows +@pytest.mark.parametrize('xenv', [Env(HOME=os.path.expanduser('~'))]) +def test_repath_HOME_PATH_itself(xonsh_env): + obs = pathsearch(regexsearch, '~') + assert 1 == len(obs) + assert exp == obs[0] -@pytest.mark.skipif(ON_WINDOWS, reason='Unix stuff') -def test_repath_home_var_brace(): - exp = os.path.expanduser('~') - built_ins.ENV = Env(HOME=exp) - with mock_xonsh_env(built_ins.ENV): - obs = pathsearch(regexsearch, '${"HOME"}') - assert 1 == len(obs) - assert exp == obs[0] -def test_helper_int(): - with mock_xonsh_env({}): - helper(int, 'int') +@skip_if_on_windows +@pytest.mark.parametrize('xenv', [Env(HOME=os.path.expanduser('~'))]) +def test_repath_HOME_PATH_contents(xonsh_env): + exp = os.listdir(HOME_PATH) + exp = {os.path.join(HOME_PATH, p) for p in exp} + obs = set(pathsearch(regexsearch, '~/.*')) + assert exp == obs -def test_helper_helper(): - with mock_xonsh_env({}): - helper(helper, 'helper') -def test_helper_env(): - with mock_xonsh_env({}): - helper(Env, 'Env') +@skip_if_on_windows +@pytest.mark.parametrize('xenv', [Env(HOME=os.path.expanduser('~'))]) +def test_repath_HOME_PATH_var(xonsh_env): + obs = pathsearch(regexsearch, '$HOME') + assert 1 == len(obs) + assert exp == obs[0] -def test_superhelper_int(): - with mock_xonsh_env({}): - superhelper(int, 'int') -def test_superhelper_helper(): - with mock_xonsh_env({}): - superhelper(helper, 'helper') +@skip_if_on_windows +@pytest.mark.parametrize('xenv', [Env(HOME=os.path.expanduser('~'))]) +def test_repath_HOME_PATH_var_brace(xonsh_env): + obs = pathsearch(regexsearch, '${"HOME"}') + assert 1 == len(obs) + assert exp == obs[0] -def test_superhelper_env(): - with mock_xonsh_env({}): - superhelper(Env, 'Env') + +def test_helper_int(xonsh_env): + helper(int, 'int') + +def test_helper_helper(xonsh_env): + helper(helper, 'helper') + +def test_helper_env(xonsh_env): + helper(Env, 'Env') + +def test_superhelper_int(xonsh_env): + superhelper(int, 'int') + +def test_superhelper_helper(xonsh_env): + superhelper(helper, 'helper') + +def test_superhelper_env(xonsh_env): + superhelper(Env, 'Env') def test_ensure_list_of_strs(): cases = [(['yo'], 'yo'), (['yo'], ['yo']), (['42'], 42), (['42'], [42])] diff --git a/tests/test_tools.py b/tests/test_tools.py index 9f62dadfd..0dd15affc 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -572,7 +572,6 @@ def expand(path): (b'~/../', '~/../'), ]) def test_env_path_getitem(inp, exp, xonsh_env): - # lambda to expand the expected paths obs = EnvPath(inp)[0] # call to __getitem__ assert expand(exp) == obs