2020-12-17 00:56:22 +05:30
|
|
|
"""Test module xonsh/cli_utils.py"""
|
2021-11-18 00:21:18 +05:30
|
|
|
|
2020-12-17 00:56:22 +05:30
|
|
|
from xonsh import cli_utils
|
|
|
|
|
|
|
|
|
2021-11-18 00:21:18 +05:30
|
|
|
def func_with_doc(param: str, multi: str, optional=False):
|
2020-12-17 00:56:22 +05:30
|
|
|
"""func doc
|
|
|
|
multi-line
|
|
|
|
|
|
|
|
Parameters
|
|
|
|
----------
|
|
|
|
param
|
|
|
|
param doc
|
|
|
|
multi
|
|
|
|
param doc
|
|
|
|
multi line
|
2021-11-18 00:21:18 +05:30
|
|
|
optional : -o, --opt
|
|
|
|
an optional parameter with flags defined in description
|
2021-08-28 19:53:20 +05:30
|
|
|
|
2020-12-17 00:56:22 +05:30
|
|
|
Returns
|
|
|
|
-------
|
|
|
|
str
|
|
|
|
return doc
|
|
|
|
"""
|
2021-11-18 00:21:18 +05:30
|
|
|
return param + multi, optional
|
2020-12-17 00:56:22 +05:30
|
|
|
|
|
|
|
|
|
|
|
def test_get_doc_param():
|
2021-11-18 00:21:18 +05:30
|
|
|
doc = cli_utils.NumpyDoc(func_with_doc)
|
|
|
|
assert doc.description.splitlines() == [
|
2020-12-17 00:56:22 +05:30
|
|
|
"func doc",
|
|
|
|
"multi-line",
|
|
|
|
]
|
2021-11-18 00:21:18 +05:30
|
|
|
assert doc.epilog.splitlines() == [
|
2021-08-28 19:53:20 +05:30
|
|
|
"Returns",
|
|
|
|
"-------",
|
|
|
|
"str",
|
|
|
|
" return doc",
|
|
|
|
]
|
2021-11-18 00:21:18 +05:30
|
|
|
assert doc.params["param"].splitlines() == [
|
|
|
|
"param doc",
|
|
|
|
]
|
|
|
|
assert doc.params["multi"].splitlines() == [
|
|
|
|
"param doc",
|
|
|
|
"multi line",
|
|
|
|
]
|
|
|
|
assert doc.flags == {"optional": ["-o", "--opt"]}
|
2021-08-26 04:02:13 +05:30
|
|
|
|
|
|
|
|
|
|
|
def test_generated_parser():
|
|
|
|
from xonsh.completers._aliases import CompleterAlias
|
|
|
|
|
|
|
|
alias = CompleterAlias()
|
|
|
|
|
|
|
|
assert alias.parser.description
|
|
|
|
|
|
|
|
positionals = alias.parser._get_positional_actions()
|
|
|
|
add_cmd = positionals[0].choices["add"]
|
|
|
|
assert "Add a new completer" in add_cmd.description
|
|
|
|
assert (
|
|
|
|
alias.parser.format_usage()
|
2021-12-12 08:47:47 +05:30
|
|
|
== "usage: completer [-h] {add,remove,rm,list,ls,complete} ...\n"
|
2021-08-26 04:02:13 +05:30
|
|
|
)
|
|
|
|
assert add_cmd.format_usage() == "usage: completer add [-h] name func [pos]\n"
|
2021-12-20 08:36:29 +05:30
|
|
|
|
|
|
|
|
|
|
|
def test_parser_hooking():
|
|
|
|
from xonsh.history.main import HistoryAlias
|
|
|
|
|
|
|
|
alias = HistoryAlias()
|
|
|
|
|
|
|
|
parser, _ = cli_utils.ArgparseCompleter.get_parser(alias.parser, ["show"])
|
|
|
|
assert parser._get_positional_actions()[0].choices == (
|
|
|
|
"session",
|
|
|
|
"xonsh",
|
|
|
|
"all",
|
|
|
|
"zsh",
|
|
|
|
"bash",
|
|
|
|
)
|
2024-05-16 16:31:05 +05:30
|
|
|
|
|
|
|
|
|
|
|
def test_parser_default_func(mocker):
|
|
|
|
import xonsh.xontribs as xx
|
|
|
|
|
|
|
|
alias = xx.XontribAlias()
|
|
|
|
|
|
|
|
def func():
|
|
|
|
return True
|
|
|
|
|
|
|
|
mocker.patch.object(xx, "xontribs_list", func)
|
|
|
|
assert alias([]) is True
|