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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
"""
Unit Tests For the Argument DTO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""
from argh.dto import ParserAddArgumentSpec
def test_update_empty_dto() -> None:
def stub_completer(): ...
dto = ParserAddArgumentSpec(
func_arg_name="foo",
cli_arg_names=["-f"],
)
other_dto = ParserAddArgumentSpec(
func_arg_name="bar",
cli_arg_names=["-f", "--foo"],
is_required=True,
default_value=123,
nargs="+",
other_add_parser_kwargs={"knights": "Ni!"},
completer=stub_completer,
)
dto.update(other_dto)
assert dto == ParserAddArgumentSpec(
func_arg_name="foo",
cli_arg_names=["-f", "--foo"],
is_required=True,
default_value=123,
nargs="+",
other_add_parser_kwargs={"knights": "Ni!"},
completer=stub_completer,
)
def test_update_full_dto() -> None:
def stub_completer_one(): ...
def stub_completer_two(): ...
dto = ParserAddArgumentSpec(
func_arg_name="foo",
cli_arg_names=["-f"],
nargs="?",
is_required=True,
default_value=123,
other_add_parser_kwargs={"'tis but a": "scratch"},
completer=stub_completer_one,
)
other_dto = ParserAddArgumentSpec(
func_arg_name="bar",
cli_arg_names=["-f", "--foo"],
nargs="+",
is_required=False,
default_value=None,
other_add_parser_kwargs={"knights": "Ni!"},
completer=stub_completer_two,
)
dto.update(other_dto)
assert dto == ParserAddArgumentSpec(
func_arg_name="foo",
cli_arg_names=["-f", "--foo"],
is_required=False,
default_value=None,
nargs="+",
other_add_parser_kwargs={"knights": "Ni!", "'tis but a": "scratch"},
completer=stub_completer_two,
)
class TestGetAllKwargs: ...
def test_make_from_kwargs_minimal() -> None:
dto = ParserAddArgumentSpec.make_from_kwargs("foo", ["-f", "--foo"], {})
assert dto == ParserAddArgumentSpec(
func_arg_name="foo", cli_arg_names=["-f", "--foo"]
)
def test_make_from_kwargs_full() -> None:
dto = ParserAddArgumentSpec.make_from_kwargs(
"foo",
["-f", "--foo"],
{
"action": "some action",
"nargs": "?",
"default": None,
"type": str,
"choices": [1, 2, 3],
"required": False,
"help": "some help",
"metavar": "FOOOOO",
"dest": "foo_dest",
"some arbitrary key": "and its value",
},
)
assert dto == ParserAddArgumentSpec(
func_arg_name="foo",
cli_arg_names=["-f", "--foo"],
is_required=False,
default_value=None,
nargs="?",
other_add_parser_kwargs={
"action": "some action",
"type": str,
"choices": [1, 2, 3],
"help": "some help",
"metavar": "FOOOOO",
"dest": "foo_dest",
"some arbitrary key": "and its value",
},
)
|