Add ProcessPoolAction, update CAP to look only at keywords correctly

This commit is contained in:
2025-05-28 00:58:50 -04:00
parent fb1ffbe9f6
commit f196e38c57
10 changed files with 282 additions and 28 deletions

View File

@ -0,0 +1,49 @@
import pytest
from falyx.exceptions import CommandArgumentError
from falyx.parsers import CommandArgumentParser
def test_str():
"""Test the string representation of CommandArgumentParser."""
parser = CommandArgumentParser()
assert (
str(parser)
== "CommandArgumentParser(args=1, flags=2, keywords=2, positional=0, required=0)"
)
parser.add_argument("test", action="store", help="Test argument")
assert (
str(parser)
== "CommandArgumentParser(args=2, flags=3, keywords=2, positional=1, required=1)"
)
parser.add_argument("-o", "--optional", action="store", help="Optional argument")
assert (
str(parser)
== "CommandArgumentParser(args=3, flags=5, keywords=4, positional=1, required=1)"
)
parser.add_argument("--flag", action="store", help="Flag argument", required=True)
assert (
str(parser)
== "CommandArgumentParser(args=4, flags=6, keywords=5, positional=1, required=2)"
)
assert (
repr(parser)
== "CommandArgumentParser(args=4, flags=6, keywords=5, positional=1, required=2)"
)
@pytest.mark.asyncio
async def test_positional_text_with_choices():
parser = CommandArgumentParser()
parser.add_argument("path", choices=["a", "b"])
args = await parser.parse_args(["a"])
assert args["path"] == "a"
with pytest.raises(CommandArgumentError):
await parser.parse_args(["c"])
with pytest.raises(CommandArgumentError):
await parser.parse_args([])