def test_missing_argument_string_cast(): ctx = click.Context(click.Command("")) with pytest.raises(click.MissingParameter) as excinfo: click.Argument(["a"], required=True).process_value(ctx, None) assert str(excinfo.value) == "Missing parameter: a"
def test_path_type(runner, cls, expect): cli = click.Command( "cli", params=[click.Argument(["p"], type=click.Path(path_type=cls))], callback=lambda p: p, ) result = runner.invoke(cli, ["a/b/c.txt"], standalone_mode=False) assert result.exception is None assert result.return_value == expect
def test_cast_multi_default(runner, nargs, multiple, default, expect): if nargs == -1: param = click.Argument(["a"], nargs=nargs, default=default) else: param = click.Option(["-a"], nargs=nargs, multiple=multiple, default=default) cli = click.Command("cli", params=[param], callback=lambda a: a) result = runner.invoke(cli, standalone_mode=False) assert result.exception is None assert result.return_value == expect
def test_nargs_bad_default(runner, value): with pytest.raises(ValueError, match="nargs=2"): click.Argument(["a"], nargs=2, default=value)
def test_multiple_not_allowed(): with pytest.raises(TypeError, match="multiple"): click.Argument(["a"], multiple=True)
"type": BOOL_PARAM_TYPE[1], "required": False, "nargs": 1, "multiple": False, "default": False, "envvar": None, "help": "Show this message and exit.", "prompt": None, "is_flag": True, "flag_value": True, "count": False, "hidden": False, }, ) NAME_ARGUMENT = ( click.Argument(["name"]), { "name": "name", "param_type_name": "argument", "opts": ["name"], "secondary_opts": [], "type": STRING_PARAM_TYPE[1], "required": True, "nargs": 1, "multiple": False, "default": None, "envvar": None, }, ) NUMBER_OPTION = ( click.Option(["-c", "--count", "number"], default=1),
def test_formatting_with_options_metavar_empty(runner): cli = click.Command("cli", options_metavar="", params=[click.Argument(["var"])]) result = runner.invoke(cli, ["--help"]) assert "Usage: cli VAR\n" in result.output