xonsh/tests/test_builtins.py

103 lines
2.7 KiB
Python
Raw Normal View History

2015-02-19 23:58:25 -06:00
"""Tests the xonsh lexer."""
from __future__ import unicode_literals, print_function
import os
2015-03-25 18:32:10 -05:00
import nose
from nose.tools import assert_equal, assert_true, assert_not_in
2015-02-19 23:58:25 -06:00
2015-02-22 23:46:18 -06:00
from xonsh import built_ins
2015-03-28 17:55:48 -05:00
from xonsh.built_ins import Env, reglob, regexpath, helper, superhelper, \
ensure_list_of_strs
2015-02-19 23:58:25 -06:00
def test_env_normal():
env = Env(VAR='wakka')
assert_equal('wakka', env['VAR'])
def test_env_path_list():
env = Env(MYPATH=['wakka'])
assert_equal(['wakka'], env['MYPATH'])
def test_env_path_str():
env = Env(MYPATH='wakka' + os.pathsep + 'jawaka')
assert_equal(['wakka', 'jawaka'], env['MYPATH'])
def test_env_detype():
env = Env(MYPATH=['wakka', 'jawaka'])
assert_equal({'MYPATH': 'wakka' + os.pathsep + 'jawaka'}, env.detype())
def test_env_detype_mutable_access_clear():
env = Env(MYPATH=['wakka', 'jawaka'])
assert_equal({'MYPATH': 'wakka' + os.pathsep + 'jawaka'}, env.detype())
env['MYPATH'][0] = 'woah'
assert_equal(None, env._detyped)
assert_equal({'MYPATH': 'woah' + os.pathsep + 'jawaka'}, env.detype())
def test_env_detype_no_dict():
env = Env(YO={'hey': 42})
det = env.detype()
assert_not_in('YO', det)
2015-02-22 23:46:18 -06:00
def test_reglob_tests():
testfiles = reglob('test_.*')
for f in testfiles:
assert_true(f.startswith('test_'))
def test_repath_home_itself():
exp = os.path.expanduser('~')
obs = regexpath('~')
assert_equal(1, len(obs))
assert_equal(exp, obs[0])
def test_repath_home_contents():
home = os.path.expanduser('~')
exp = os.listdir(home)
exp = {os.path.join(home, p) for p in exp}
obs = set(regexpath('~/.*'))
assert_equal(exp, obs)
def test_repath_home_var():
exp = os.path.expanduser('~')
built_ins.ENV = Env(HOME=exp)
obs = regexpath('$HOME')
assert_equal(1, len(os.environ))
built_ins.ENV.undo_replace_env()
assert_equal(1, len(obs))
assert_equal(exp, obs[0])
def test_repath_home_var_brace():
exp = os.path.expanduser('~')
built_ins.ENV = Env(HOME=exp)
obs = regexpath('${HOME}')
assert_equal(1, len(os.environ))
built_ins.ENV.undo_replace_env()
assert_equal(1, len(obs))
assert_equal(exp, obs[0])
def test_helper_int():
helper(int, 'int')
def test_helper_helper():
helper(helper, 'helper')
2015-02-23 22:21:46 -06:00
def test_helper_env():
helper(Env, 'Env')
def test_superhelper_int():
2015-02-23 22:21:46 -06:00
superhelper(int, 'int')
def test_superhelper_helper():
2015-02-23 22:21:46 -06:00
superhelper(helper, 'helper')
def test_superhelper_env():
superhelper(Env, 'Env')
2015-03-28 17:55:48 -05:00
def test_ensure_list_of_strs():
cases = [(['yo'], 'yo'), (['yo'], ['yo']), (['42'], 42), (['42'], [42])]
for exp, inp in cases:
obs = ensure_list_of_strs(inp)
yield assert_equal, exp, obs
2015-02-19 23:58:25 -06:00
2015-04-05 15:42:24 -05:00
2015-02-19 23:58:25 -06:00
if __name__ == '__main__':
nose.runmodule()