コード例 #1
0
def test_parse_fail_if_too_many_arguments_with_missing_command_name(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument1"))
    fmt = builder.format

    with pytest.raises(CannotParseArgsException):
        parser.parse(StringArgs("server foo bar"), fmt)
コード例 #2
0
def test_parse_option_stops_parsing_if_invalid_option_and_lenient(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    fmt = builder.format

    args = parser.parse(StringArgs("server add --foo bar"), fmt, True)

    assert {} == args.arguments(False)
    assert {} == args.options(False)
コード例 #3
0
def test_option_fails_if_invalid_option(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    fmt = builder.format

    with pytest.raises(NoSuchOptionException) as e:
        parser.parse(StringArgs("server add --foo"), fmt)

    assert 'The "--foo" option does not exist.' == str(e.value)
コード例 #4
0
def test_parse_fails_if_missing_required_argument(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument1", Argument.REQUIRED))
    builder.add_argument(Argument("argument2", Argument.REQUIRED))
    fmt = builder.format

    with pytest.raises(CannotParseArgsException):
        parser.parse(StringArgs("server add foo"), fmt)
コード例 #5
0
def test_parse_ignores_missing_command_names(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server", ["server-alias"])
    add = CommandName("add", ["add-alias"])
    builder.add_command_names(server, add)
    fmt = builder.format

    args = parser.parse(StringArgs(""), fmt)

    assert [server, add] == args.command_names
    assert {} == args.arguments(False)
    assert {} == args.options(False)
コード例 #6
0
def test_parse_option_up_to_invalid_option_if_lenient(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument"))
    fmt = builder.format

    args = parser.parse(StringArgs("server add bar --foo"), fmt, True)

    assert {"argument": "bar"} == args.arguments(False)
    assert {} == args.options(False)
コード例 #7
0
def test_parse_short_option_fails_if_missing_value(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_option(Option("option", "o", flags=Option.REQUIRED_VALUE))
    fmt = builder.format

    with pytest.raises(CannotParseArgsException) as e:
        parser.parse(StringArgs("server add -o"), fmt)

    assert 'The "--option" option requires a value.' == str(e.value)
コード例 #8
0
def test_parse_short_option_with_value2(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_option(Option("option", "o", flags=Option.OPTIONAL_VALUE))
    fmt = builder.format

    args = parser.parse(StringArgs("server add -ofoo"), fmt)

    assert {} == args.arguments(False)
    assert {"option": "foo"} == args.options(False)
コード例 #9
0
def test_parse_short_option_without_value(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_option(Option("option", "o"))
    fmt = builder.format

    args = parser.parse(StringArgs("server add -o"), fmt)

    assert {} == args.arguments(False)
    assert {"option": True} == args.options(False)
コード例 #10
0
def test_parse_multi_valued_arguments_ignores_missing_command_names(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("multi", Argument.MULTI_VALUED))
    fmt = builder.format

    args = parser.parse(StringArgs("server one two three"), fmt)

    assert {"multi": ["one", "two", "three"]} == args.arguments(False)
    assert {} == args.options(False)
コード例 #11
0
def test_parse_does_not_fail_if_too_many_arguments_and_lenient(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument1"))
    fmt = builder.format

    args = parser.parse(StringArgs("server add foo bar"), fmt, True)

    assert {"argument1": "foo"} == args.arguments(False)
    assert {} == args.options(False)
コード例 #12
0
def test_parse_command_names(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    fmt = builder.format

    args = parser.parse(StringArgs("server add"), fmt)

    assert [server, add] == args.command_names
    assert {} == args.arguments(False)
    assert {} == args.options(False)
コード例 #13
0
def test_parse_arguments_ignores_missing_command_name_aliases(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server", ["server-alias"])
    add = CommandName("add", ["add-alias"])
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument1"))
    builder.add_argument(Argument("argument2"))
    fmt = builder.format

    args = parser.parse(StringArgs("server-alias foo bar"), fmt)

    assert {"argument1": "foo", "argument2": "bar"} == args.arguments(False)
    assert {} == args.options(False)
コード例 #14
0
def test_parse_arguments(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument1"))
    builder.add_argument(Argument("argument2"))
    fmt = builder.format

    args = parser.parse(StringArgs("server add foo bar"), fmt)

    assert {"argument1": "foo", "argument2": "bar"} == args.arguments(False)
    assert {} == args.options(False)
コード例 #15
0
def test_parse_does_not_fail_if_missing_required_argument_and_lenient(parser):
    builder = ArgsFormatBuilder()
    server = CommandName("server")
    add = CommandName("add")
    builder.add_command_names(server, add)
    builder.add_argument(Argument("argument1", Argument.REQUIRED))
    builder.add_argument(Argument("argument2", Argument.REQUIRED))
    fmt = builder.format

    args = parser.parse(StringArgs("server add foo"), fmt, True)

    assert {"argument1": "foo"} == args.arguments(False)
    assert {} == args.options(False)