1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
"""Test module xonsh/cli_utils.py"""
from xonsh import cli_utils
def func_with_doc(param: str, multi: str, optional=False):
"""func doc
multi-line
Parameters
----------
param
param doc
multi
param doc
multi line
optional : -o, --opt
an optional parameter with flags defined in description
Returns
-------
str
return doc
"""
return param + multi, optional
def test_get_doc_param():
doc = cli_utils.NumpyDoc(func_with_doc)
assert doc.description.splitlines() == [
"func doc",
"multi-line",
]
assert doc.epilog.splitlines() == [
"Returns",
"-------",
"str",
" return doc",
]
assert doc.params["param"].splitlines() == [
"param doc",
]
assert doc.params["multi"].splitlines() == [
"param doc",
"multi line",
]
assert doc.flags == {"optional": ["-o", "--opt"]}
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()
== "usage: completer [-h] {add,remove,rm,list,ls,complete} ...\n"
)
assert add_cmd.format_usage() == "usage: completer add [-h] name func [pos]\n"
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",
)
|