1# -*- coding: utf-8 -*-
2"""Testing built_ins.Aliases"""
3from __future__ import unicode_literals, print_function
4
5import os
6
7import pytest
8
9import xonsh.built_ins as built_ins
10from xonsh.aliases import Aliases
11from xonsh.environ import Env
12
13from tools import skip_if_on_windows
14
15
16def cd(args, stdin=None):
17    return args
18
19
20ALIASES = Aliases(
21    {"o": ["omg", "lala"]},
22    color_ls=["ls", "--color=true"],
23    ls="ls '-  -'",
24    cd=cd,
25    indirect_cd="cd ..",
26)
27RAW = ALIASES._raw
28
29
30def test_imports():
31    expected = {
32        "o": ["omg", "lala"],
33        "ls": ["ls", "-  -"],
34        "color_ls": ["ls", "--color=true"],
35        "cd": cd,
36        "indirect_cd": ["cd", ".."],
37    }
38    assert RAW == expected
39
40
41def test_eval_normal(xonsh_builtins):
42    assert ALIASES.get("o") == ["omg", "lala"]
43
44
45def test_eval_self_reference(xonsh_builtins):
46    assert ALIASES.get("ls") == ["ls", "-  -"]
47
48
49def test_eval_recursive(xonsh_builtins):
50    assert ALIASES.get("color_ls") == ["ls", "-  -", "--color=true"]
51
52
53@skip_if_on_windows
54def test_eval_recursive_callable_partial(xonsh_builtins):
55    xonsh_builtins.__xonsh_env__ = Env(HOME=os.path.expanduser("~"))
56    assert ALIASES.get("indirect_cd")(["arg2", "arg3"]) == ["..", "arg2", "arg3"]
57