xonsh/tests/test_builtins.py

116 lines
2.6 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
2015-05-14 18:18:46 -05:00
"""Tests the xonsh builtins."""
2015-02-19 23:58:25 -06:00
from __future__ import unicode_literals, print_function
import os
import re
2015-02-19 23:58:25 -06:00
2016-06-22 22:50:01 +03:00
import pytest
2015-02-19 23:58:25 -06:00
2015-07-29 23:58:25 +02:00
from xonsh import built_ins
2016-06-11 22:38:37 -04:00
from xonsh.built_ins import reglob, pathsearch, helper, superhelper, \
2016-06-16 00:55:52 -04:00
ensure_list_of_strs, list_of_strs_or_callables, regexsearch, \
globsearch
2015-05-14 18:18:46 -05:00
from xonsh.environ import Env
2015-02-19 23:58:25 -06:00
2016-06-25 13:06:59 +03:00
from tools import skip_if_on_windows
HOME_PATH = os.path.expanduser('~')
2015-12-19 18:09:06 -05:00
@pytest.mark.parametrize('testfile', reglob('test_.*'))
2016-06-29 18:32:42 +03:00
def test_reglob_tests(testfile):
assert (testfile.startswith('test_'))
2015-02-22 23:46:18 -06:00
2016-06-29 18:32:42 +03:00
@pytest.fixture
def home_env(xonsh_builtins):
2016-07-03 12:00:24 +03:00
"""Set `__xonsh_env__ ` to a new Env instance on `xonsh_builtins`"""
2016-06-29 18:32:42 +03:00
xonsh_builtins.__xonsh_env__ = Env(HOME=HOME_PATH)
return xonsh_builtins
2016-06-25 13:06:59 +03:00
@skip_if_on_windows
2016-06-29 18:32:42 +03:00
def test_repath_backslash(home_env):
2016-06-25 13:06:59 +03:00
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
2016-06-29 18:32:42 +03:00
2016-06-25 13:06:59 +03:00
@skip_if_on_windows
2016-06-29 18:32:42 +03:00
def test_repath_HOME_PATH_itself(home_env):
exp = HOME_PATH
2016-06-25 13:06:59 +03:00
obs = pathsearch(regexsearch, '~')
assert 1 == len(obs)
assert exp == obs[0]
@skip_if_on_windows
2016-06-29 18:32:42 +03:00
def test_repath_HOME_PATH_contents(home_env):
2016-06-25 13:06:59 +03:00
exp = os.listdir(HOME_PATH)
exp = {os.path.join(HOME_PATH, p) for p in exp}
obs = set(pathsearch(regexsearch, '~/.*'))
assert exp == obs
@skip_if_on_windows
2016-06-29 18:32:42 +03:00
def test_repath_HOME_PATH_var(home_env):
exp = HOME_PATH
2016-06-25 13:06:59 +03:00
obs = pathsearch(regexsearch, '$HOME')
assert 1 == len(obs)
assert exp == obs[0]
@skip_if_on_windows
2016-06-29 18:32:42 +03:00
def test_repath_HOME_PATH_var_brace(home_env):
exp = HOME_PATH
2016-06-25 13:06:59 +03:00
obs = pathsearch(regexsearch, '${"HOME"}')
assert 1 == len(obs)
assert exp == obs[0]
2016-06-29 18:32:42 +03:00
def test_helper_int(home_env):
2016-06-25 13:06:59 +03:00
helper(int, 'int')
2016-06-29 18:32:42 +03:00
def test_helper_helper(home_env):
2016-06-25 13:06:59 +03:00
helper(helper, 'helper')
2016-06-29 18:32:42 +03:00
def test_helper_env(home_env):
2016-06-25 13:06:59 +03:00
helper(Env, 'Env')
2016-06-29 18:32:42 +03:00
def test_superhelper_int(home_env):
2016-06-25 13:06:59 +03:00
superhelper(int, 'int')
2016-06-29 18:32:42 +03:00
def test_superhelper_helper(home_env):
2016-06-25 13:06:59 +03:00
superhelper(helper, 'helper')
2016-06-29 18:32:42 +03:00
def test_superhelper_env(home_env):
2016-06-25 13:06:59 +03:00
superhelper(Env, 'Env')
2016-06-29 18:32:42 +03:00
@pytest.mark.parametrize('exp, inp', [
(['yo'], 'yo'),
(['yo'], ['yo']),
(['42'], 42),
(['42'], [42])
])
def test_ensure_list_of_strs(exp, inp):
obs = ensure_list_of_strs(inp)
assert exp == obs
f = lambda x: 20
@pytest.mark.parametrize('exp, inp', [
(['yo'], 'yo'),
(['yo'], ['yo']),
(['42'], 42),
(['42'], [42]),
([f], f),
([f], [f])
])
def test_list_of_strs_or_callables(exp, inp):
obs = list_of_strs_or_callables(inp)
assert exp == obs