def test_get_arguments(builder): arg1 = Argument("argument1") arg2 = Argument("argument2") builder.add_arguments(arg1, arg2) assert {"argument1": arg1, "argument2": arg2} == builder.get_arguments()
def _render_help(self, layout): # type: (BlockLayout) -> None help = self._application.config.help commands = self._application.named_commands global_args_format = self._application.global_args_format builder = ArgsFormatBuilder() builder.add_argument( Argument("command", Argument.REQUIRED, "The command to execute")) builder.add_argument( Argument("arg", Argument.MULTI_VALUED, "The arguments of the command")) builder.add_options(*global_args_format.get_options().values()) args_format = builder.format self._render_name(layout, self._application) self._render_usage(layout, self._application, args_format) self._render_arguments(layout, args_format.get_arguments().values()) if args_format.has_options(): self._render_global_options(layout, args_format.get_options().values()) if not commands.is_empty(): self._render_commands(layout, commands) if help: self._render_description(layout, help)
def test_get_argument_by_position(builder): arg1 = Argument("argument1") arg2 = Argument("argument2") builder.add_arguments(arg1, arg2) assert arg1 == builder.get_argument(0) assert arg2 == builder.get_argument(1)
def test_fail_if_adding_required_argument_after_optional_argument_in_base_definition( base_format_builder, ): base_format_builder.add_argument(Argument("argument1")) builder = ArgsFormatBuilder(base_format_builder.format) with pytest.raises(CannotAddArgumentException): builder.add_argument(Argument("argument2", Argument.REQUIRED))
def test_has_argument_at_position(builder): arg1 = Argument("argument1") arg2 = Argument("argument2") builder.add_arguments(arg1, arg2) assert builder.has_argument(0) assert builder.has_argument(1)
def test_has_arguments(builder): arg1 = Argument("argument1") arg2 = Argument("argument2") builder.add_arguments(arg1, arg2) assert builder.has_arguments() assert builder.has_arguments()
def test_argument_preserves_existing_arguments(builder): arg1 = Argument("argument1") arg2 = Argument("argument2") builder.add_argument(arg1) builder.add_argument(arg2) assert {"argument1": arg1, "argument2": arg2} == builder.get_arguments()
def test_fail_if_adding_argument_with_existing_name_in_base_definition( base_format_builder, ): base_format_builder.add_argument(Argument("argument", Argument.REQUIRED)) builder = ArgsFormatBuilder(base_format_builder.format) with pytest.raises(CannotAddArgumentException): builder.add_argument(Argument("argument", Argument.OPTIONAL))
def test_optional_argument_with_default_value(): arg = Argument("argument", Argument.OPTIONAL, default="Default") assert "argument" == arg.name assert not arg.is_required() assert arg.is_optional() assert not arg.is_multi_valued() assert "Default" == arg.default assert arg.description is None
def test_create(): arg = Argument("argument") assert "argument" == arg.name assert not arg.is_required() assert arg.is_optional() assert not arg.is_multi_valued() assert arg.default is None assert arg.description is None
def test_optional_multi_valued_argument(): arg = Argument("argument", Argument.OPTIONAL | Argument.MULTI_VALUED) assert "argument" == arg.name assert not arg.is_required() assert arg.is_optional() assert arg.is_multi_valued() assert arg.default == [] assert arg.description is None
def test_optional_argument(): arg = Argument("argument", Argument.OPTIONAL) assert "argument" == arg.name assert not arg.is_required() assert arg.is_optional() assert not arg.is_multi_valued() assert arg.default is None assert arg.description is None
def test_set_arguments(builder): arg1 = Argument("argument1") arg2 = Argument("argument2") arg3 = Argument("argument3") builder.add_argument(arg1) builder.set_arguments(arg2, arg3) assert {"argument2": arg2, "argument3": arg3} == builder.get_arguments()
def test_fail_if_adding_optional_argument_after_multi_valued_argument_in_base_definition( base_format_builder, ): base_format_builder.add_argument( Argument("argument1", Argument.MULTI_VALUED)) builder = ArgsFormatBuilder(base_format_builder.format) with pytest.raises(CannotAddArgumentException): builder.add_argument(Argument("argument2"))
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)
def test_optional_multi_valued_argument_with_default(): arg = Argument( "argument", Argument.OPTIONAL | Argument.MULTI_VALUED, default=["foo", "bar"] ) assert "argument" == arg.name assert not arg.is_required() assert arg.is_optional() assert arg.is_multi_valued() assert ["foo", "bar"] == arg.default assert arg.description is None
def test_has_optional_argument(builder): arg1 = Argument("argument1", Argument.REQUIRED) arg2 = Argument("argument2", Argument.OPTIONAL) builder.add_argument(arg1) assert not builder.has_optional_argument() builder.add_argument(arg2) assert builder.has_optional_argument()
def test_has_multi_valued_argument(builder): arg1 = Argument("argument1") arg2 = Argument("argument2", Argument.MULTI_VALUED) builder.add_argument(arg1) assert not builder.has_multi_valued_argument() builder.add_argument(arg2) assert builder.has_multi_valued_argument()
def test_has_argument_at_position_from_base_definition(base_format_builder): arg1 = Argument("argument1") arg2 = Argument("argument2") base_format_builder.add_argument(arg1) builder = ArgsFormatBuilder(base_format_builder.format) builder.add_argument(arg2) assert builder.has_argument(0) assert builder.has_argument(1) assert not builder.has_argument(1, False) assert builder.has_argument(0, False)
def test_get_arguments_with_base_arguments(base_format_builder): arg1 = Argument("argument1") arg2 = Argument("argument2") base_format_builder.add_argument(arg1) builder = ArgsFormatBuilder(base_format_builder.format) builder.add_argument(arg2) assert {"argument1": arg1, "argument2": arg2} == builder.get_arguments() assert {"argument2": arg2} == builder.get_arguments(False)
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)
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)
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)
def test_has_arguments_with_base_definition(base_format_builder): arg1 = Argument("argument1") arg2 = Argument("argument2") base_format_builder.add_argument(arg1) builder = ArgsFormatBuilder(base_format_builder.format) assert builder.has_arguments() assert not builder.has_arguments(False) builder.add_argument(arg2) assert builder.has_arguments() assert builder.has_arguments(False)
def test_has_multi_valued_argument_with_base_definition(base_format_builder): base_format_builder.add_argument(Argument("argument", Argument.MULTI_VALUED)) builder = ArgsFormatBuilder(base_format_builder.format) assert builder.has_multi_valued_argument() assert not builder.has_multi_valued_argument(False)
def test_get_argument_by_position_from_base_definition(base_format_builder): arg = Argument("argument") base_format_builder.add_argument(arg) builder = ArgsFormatBuilder(base_format_builder.format) assert arg == builder.get_argument(0)
def test_has_required_argument_with_base_definition(base_format_builder): base_format_builder.add_argument(Argument("argument", Argument.REQUIRED)) builder = ArgsFormatBuilder(base_format_builder.format) assert builder.has_required_argument() assert not builder.has_required_argument(False)
def test_has_optional_argument_with_base_definition(base_format_builder): base_format_builder.add_argument(Argument("argument", Argument.OPTIONAL)) builder = ArgsFormatBuilder(base_format_builder.format) assert builder.has_optional_argument() assert not builder.has_optional_argument(False)
def test_has_required_argument(builder): arg = Argument("argument", Argument.REQUIRED) assert not builder.has_required_argument() builder.add_argument(arg) assert builder.has_required_argument()
def test_get_argument_fails_if_in_base_definition_but_include_base_disabled( base_format_builder, ): arg = Argument("argument") base_format_builder.add_argument(arg) builder = ArgsFormatBuilder(base_format_builder.format) with pytest.raises(NoSuchArgumentException): builder.get_argument("argument", False)