- introduce namespace-aware routing with RootParseResult, RouteResult, and InvocationContext - register submenus as FalyxNamespace entries and resolve them through _entry_map - refactor FalyxParser to parse only root options and leave recursive routing to Falyx - add prepare_route, resolve_route, and route dispatch flow to Falyx - update validator and completer to understand namespace entries and route results - unify help/TLDR rendering APIs and add custom_tldr support on Command - tighten Command.resolve_args error handling and parser type validation - improve CommandRunner dependency validation and argv handling - add BottomBar.has_items and improve wrapped executor error messages - add tests for execution options, resolve_args, command runner, and route-aware validation
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from falyx.parser.falyx_parser import FalyxParser, RootOptions
|
|
|
|
|
|
def get_falyx_parser():
|
|
return FalyxParser()
|
|
|
|
|
|
def test_parse_root_options_empty():
|
|
parser = get_falyx_parser()
|
|
opts, remaining = parser._parse_root_options([])
|
|
assert opts == RootOptions()
|
|
assert remaining == []
|
|
|
|
|
|
def test_parse_root_options_consumes_known_leading_flags():
|
|
parser = get_falyx_parser()
|
|
opts, remaining = parser._parse_root_options(
|
|
["--verbose", "--never-prompt", "deploy", "--env", "prod"]
|
|
)
|
|
assert opts.verbose is True
|
|
assert opts.never_prompt is True
|
|
assert remaining == ["deploy", "--env", "prod"]
|
|
|
|
|
|
def test_parse_root_options_stops_at_first_non_root_token():
|
|
parser = get_falyx_parser()
|
|
opts, remaining = parser._parse_root_options(["deploy", "--verbose"])
|
|
assert opts == RootOptions()
|
|
assert remaining == ["deploy", "--verbose"]
|
|
|
|
|
|
def test_parse_root_options_supports_help():
|
|
parser = get_falyx_parser()
|
|
opts, remaining = parser._parse_root_options(["--help"])
|
|
assert opts.help is True
|
|
assert remaining == []
|
|
|
|
|
|
def test_parse_root_options_supports_double_dash_separator():
|
|
parser = get_falyx_parser()
|
|
opts, remaining = parser._parse_root_options(
|
|
["--verbose", "--", "deploy", "--verbose"]
|
|
)
|
|
assert opts.verbose is True
|
|
assert remaining == ["deploy", "--verbose"]
|