From e03bda413aab11dfc0c08e0e61be4d8a4fdb4ab3 Mon Sep 17 00:00:00 2001 From: Noorhteen Raja NJ Date: Thu, 16 May 2024 16:31:05 +0530 Subject: [PATCH] Fix argparser (#5421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixed the issue caused by regression ## For community ⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍 comment** --- tests/test_cli_utils.py | 12 ++++++++++++ xonsh/cli_utils.py | 11 ++++------- xonsh/xontribs.py | 2 +- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/tests/test_cli_utils.py b/tests/test_cli_utils.py index 4eda7cc4f..7010645a2 100644 --- a/tests/test_cli_utils.py +++ b/tests/test_cli_utils.py @@ -77,3 +77,15 @@ def test_parser_hooking(): "zsh", "bash", ) + + +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 diff --git a/xonsh/cli_utils.py b/xonsh/cli_utils.py index ed490240f..1ad185113 100644 --- a/xonsh/cli_utils.py +++ b/xonsh/cli_utils.py @@ -208,10 +208,6 @@ def add_args( action.help += " (type: %(type)s)" -def empty_help_func(_parser, _stdout): - _parser.print_help(file=_stdout) - - def make_parser( func: tp.Union[tp.Callable, str], empty_help=False, @@ -226,7 +222,7 @@ def make_parser( kwargs["epilog"] = doc.epilog parser = ArgParser(**kwargs) if empty_help: - parser.set_defaults(**{_FUNC_NAME: empty_help_func}) + parser.default_command = "--help" return parser @@ -410,8 +406,9 @@ def dispatch(parser: ap.ArgumentParser, args=None, lenient=False, **ns): ns["_parsed"] = parsed ns.update(vars(parsed)) - func = ns[_FUNC_NAME] - return _dispatch_func(func, ns) + if _FUNC_NAME in ns: + func = ns[_FUNC_NAME] + return _dispatch_func(func, ns) class ArgparseCompleter: diff --git a/xonsh/xontribs.py b/xonsh/xontribs.py index a9ae21928..b9c1b89a6 100644 --- a/xonsh/xontribs.py +++ b/xonsh/xontribs.py @@ -399,7 +399,7 @@ class XontribAlias(ArgParserAlias): parser.add_command(xontribs_load, prog="load") parser.add_command(xontribs_unload, prog="unload") parser.add_command(xontribs_reload, prog="reload") - parser.add_command(xontribs_list, prog="list") + parser.add_command(xontribs_list, prog="list", default=True) return parser