summaryrefslogtreecommitdiff
path: root/tests/test_bashcomplete.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_bashcomplete.py')
-rw-r--r--tests/test_bashcomplete.py418
1 files changed, 241 insertions, 177 deletions
diff --git a/tests/test_bashcomplete.py b/tests/test_bashcomplete.py
index 5eb4068..df4ef28 100644
--- a/tests/test_bashcomplete.py
+++ b/tests/test_bashcomplete.py
@@ -1,5 +1,4 @@
# -*- coding: utf-8 -*-
-
import pytest
import click
@@ -7,94 +6,95 @@ from click._bashcomplete import get_choices
def choices_without_help(cli, args, incomplete):
- completions = get_choices(cli, 'dummy', args, incomplete)
+ completions = get_choices(cli, "dummy", args, incomplete)
return [c[0] for c in completions]
def choices_with_help(cli, args, incomplete):
- return list(get_choices(cli, 'dummy', args, incomplete))
+ return list(get_choices(cli, "dummy", args, incomplete))
def test_single_command():
@click.command()
- @click.option('--local-opt')
+ @click.option("--local-opt")
def cli(local_opt):
pass
- assert choices_without_help(cli, [], '-') == ['--local-opt']
- assert choices_without_help(cli, [], '') == []
+ assert choices_without_help(cli, [], "-") == ["--local-opt"]
+ assert choices_without_help(cli, [], "") == []
def test_boolean_flag():
@click.command()
- @click.option('--shout/--no-shout', default=False)
+ @click.option("--shout/--no-shout", default=False)
def cli(local_opt):
pass
- assert choices_without_help(cli, [], '-') == ['--shout', '--no-shout']
+ assert choices_without_help(cli, [], "-") == ["--shout", "--no-shout"]
def test_multi_value_option():
@click.group()
- @click.option('--pos', nargs=2, type=float)
+ @click.option("--pos", nargs=2, type=float)
def cli(local_opt):
pass
@cli.command()
- @click.option('--local-opt')
+ @click.option("--local-opt")
def sub(local_opt):
pass
- assert choices_without_help(cli, [], '-') == ['--pos']
- assert choices_without_help(cli, ['--pos'], '') == []
- assert choices_without_help(cli, ['--pos', '1.0'], '') == []
- assert choices_without_help(cli, ['--pos', '1.0', '1.0'], '') == ['sub']
+ assert choices_without_help(cli, [], "-") == ["--pos"]
+ assert choices_without_help(cli, ["--pos"], "") == []
+ assert choices_without_help(cli, ["--pos", "1.0"], "") == []
+ assert choices_without_help(cli, ["--pos", "1.0", "1.0"], "") == ["sub"]
def test_multi_option():
@click.command()
- @click.option('--message', '-m', multiple=True)
+ @click.option("--message", "-m", multiple=True)
def cli(local_opt):
pass
- assert choices_without_help(cli, [], '-') == ['--message', '-m']
- assert choices_without_help(cli, ['-m'], '') == []
+ assert choices_without_help(cli, [], "-") == ["--message", "-m"]
+ assert choices_without_help(cli, ["-m"], "") == []
def test_small_chain():
@click.group()
- @click.option('--global-opt')
+ @click.option("--global-opt")
def cli(global_opt):
pass
@cli.command()
- @click.option('--local-opt')
+ @click.option("--local-opt")
def sub(local_opt):
pass
- assert choices_without_help(cli, [], '') == ['sub']
- assert choices_without_help(cli, [], '-') == ['--global-opt']
- assert choices_without_help(cli, ['sub'], '') == []
- assert choices_without_help(cli, ['sub'], '-') == ['--local-opt']
+ assert choices_without_help(cli, [], "") == ["sub"]
+ assert choices_without_help(cli, [], "-") == ["--global-opt"]
+ assert choices_without_help(cli, ["sub"], "") == []
+ assert choices_without_help(cli, ["sub"], "-") == ["--local-opt"]
def test_long_chain():
- @click.group('cli')
- @click.option('--cli-opt')
+ @click.group("cli")
+ @click.option("--cli-opt")
def cli(cli_opt):
pass
- @cli.group('asub')
- @click.option('--asub-opt')
+ @cli.group("asub")
+ @click.option("--asub-opt")
def asub(asub_opt):
pass
- @asub.group('bsub')
- @click.option('--bsub-opt')
+ @asub.group("bsub")
+ @click.option("--bsub-opt")
def bsub(bsub_opt):
pass
- COLORS = ['red', 'green', 'blue']
+ COLORS = ["red", "green", "blue"]
+
def get_colors(ctx, args, incomplete):
for c in COLORS:
if c.startswith(incomplete):
@@ -105,197 +105,237 @@ def test_long_chain():
if incomplete in c:
yield c
- CSUB_OPT_CHOICES = ['foo', 'bar']
- CSUB_CHOICES = ['bar', 'baz']
- @bsub.command('csub')
- @click.option('--csub-opt', type=click.Choice(CSUB_OPT_CHOICES))
- @click.option('--csub', type=click.Choice(CSUB_CHOICES))
- @click.option('--search-color', autocompletion=search_colors)
- @click.argument('color', autocompletion=get_colors)
+ CSUB_OPT_CHOICES = ["foo", "bar"]
+ CSUB_CHOICES = ["bar", "baz"]
+
+ @bsub.command("csub")
+ @click.option("--csub-opt", type=click.Choice(CSUB_OPT_CHOICES))
+ @click.option("--csub", type=click.Choice(CSUB_CHOICES))
+ @click.option("--search-color", autocompletion=search_colors)
+ @click.argument("color", autocompletion=get_colors)
def csub(csub_opt, color):
pass
- assert choices_without_help(cli, [], '-') == ['--cli-opt']
- assert choices_without_help(cli, [], '') == ['asub']
- assert choices_without_help(cli, ['asub'], '-') == ['--asub-opt']
- assert choices_without_help(cli, ['asub'], '') == ['bsub']
- assert choices_without_help(cli, ['asub', 'bsub'], '-') == ['--bsub-opt']
- assert choices_without_help(cli, ['asub', 'bsub'], '') == ['csub']
- assert choices_without_help(cli, ['asub', 'bsub', 'csub'], '-') == ['--csub-opt', '--csub', '--search-color']
- assert choices_without_help(cli, ['asub', 'bsub', 'csub', '--csub-opt'], '') == CSUB_OPT_CHOICES
- assert choices_without_help(cli, ['asub', 'bsub', 'csub'], '--csub') == ['--csub-opt', '--csub']
- assert choices_without_help(cli, ['asub', 'bsub', 'csub', '--csub'], '') == CSUB_CHOICES
- assert choices_without_help(cli, ['asub', 'bsub', 'csub', '--csub-opt'], 'f') == ['foo']
- assert choices_without_help(cli, ['asub', 'bsub', 'csub'], '') == COLORS
- assert choices_without_help(cli, ['asub', 'bsub', 'csub'], 'b') == ['blue']
- assert choices_without_help(cli, ['asub', 'bsub', 'csub', '--search-color'], 'een') == ['green']
+ assert choices_without_help(cli, [], "-") == ["--cli-opt"]
+ assert choices_without_help(cli, [], "") == ["asub"]
+ assert choices_without_help(cli, ["asub"], "-") == ["--asub-opt"]
+ assert choices_without_help(cli, ["asub"], "") == ["bsub"]
+ assert choices_without_help(cli, ["asub", "bsub"], "-") == ["--bsub-opt"]
+ assert choices_without_help(cli, ["asub", "bsub"], "") == ["csub"]
+ assert choices_without_help(cli, ["asub", "bsub", "csub"], "-") == [
+ "--csub-opt",
+ "--csub",
+ "--search-color",
+ ]
+ assert (
+ choices_without_help(cli, ["asub", "bsub", "csub", "--csub-opt"], "")
+ == CSUB_OPT_CHOICES
+ )
+ assert choices_without_help(cli, ["asub", "bsub", "csub"], "--csub") == [
+ "--csub-opt",
+ "--csub",
+ ]
+ assert (
+ choices_without_help(cli, ["asub", "bsub", "csub", "--csub"], "")
+ == CSUB_CHOICES
+ )
+ assert choices_without_help(cli, ["asub", "bsub", "csub", "--csub-opt"], "f") == [
+ "foo"
+ ]
+ assert choices_without_help(cli, ["asub", "bsub", "csub"], "") == COLORS
+ assert choices_without_help(cli, ["asub", "bsub", "csub"], "b") == ["blue"]
+ assert choices_without_help(
+ cli, ["asub", "bsub", "csub", "--search-color"], "een"
+ ) == ["green"]
def test_chaining():
- @click.group('cli', chain=True)
- @click.option('--cli-opt')
- @click.argument('arg', type=click.Choice(['cliarg1', 'cliarg2']))
+ @click.group("cli", chain=True)
+ @click.option("--cli-opt")
+ @click.argument("arg", type=click.Choice(["cliarg1", "cliarg2"]))
def cli(cli_opt, arg):
pass
@cli.command()
- @click.option('--asub-opt')
+ @click.option("--asub-opt")
def asub(asub_opt):
pass
- @cli.command(help='bsub help')
- @click.option('--bsub-opt')
- @click.argument('arg', type=click.Choice(['arg1', 'arg2']))
+ @cli.command(help="bsub help")
+ @click.option("--bsub-opt")
+ @click.argument("arg", type=click.Choice(["arg1", "arg2"]))
def bsub(bsub_opt, arg):
pass
@cli.command()
- @click.option('--csub-opt')
- @click.argument('arg', type=click.Choice(['carg1', 'carg2']), default='carg1')
+ @click.option("--csub-opt")
+ @click.argument("arg", type=click.Choice(["carg1", "carg2"]), default="carg1")
def csub(csub_opt, arg):
pass
- assert choices_without_help(cli, [], '-') == ['--cli-opt']
- assert choices_without_help(cli, [], '') == ['cliarg1', 'cliarg2']
- assert choices_without_help(cli, ['cliarg1', 'asub'], '-') == ['--asub-opt']
- assert choices_without_help(cli, ['cliarg1', 'asub'], '') == ['bsub', 'csub']
- assert choices_without_help(cli, ['cliarg1', 'bsub'], '') == ['arg1', 'arg2']
- assert choices_without_help(cli, ['cliarg1', 'asub', '--asub-opt'], '') == []
- assert choices_without_help(cli, ['cliarg1', 'asub', '--asub-opt', '5', 'bsub'], '-') == ['--bsub-opt']
- assert choices_without_help(cli, ['cliarg1', 'asub', 'bsub'], '-') == ['--bsub-opt']
- assert choices_without_help(cli, ['cliarg1', 'asub', 'csub'], '') == ['carg1', 'carg2']
- assert choices_without_help(cli, ['cliarg1', 'bsub', 'arg1', 'csub'], '') == ['carg1', 'carg2']
- assert choices_without_help(cli, ['cliarg1', 'asub', 'csub'], '-') == ['--csub-opt']
- assert choices_with_help(cli, ['cliarg1', 'asub'], 'b') == [('bsub', 'bsub help')]
+ assert choices_without_help(cli, [], "-") == ["--cli-opt"]
+ assert choices_without_help(cli, [], "") == ["cliarg1", "cliarg2"]
+ assert choices_without_help(cli, ["cliarg1", "asub"], "-") == ["--asub-opt"]
+ assert choices_without_help(cli, ["cliarg1", "asub"], "") == ["bsub", "csub"]
+ assert choices_without_help(cli, ["cliarg1", "bsub"], "") == ["arg1", "arg2"]
+ assert choices_without_help(cli, ["cliarg1", "asub", "--asub-opt"], "") == []
+ assert choices_without_help(
+ cli, ["cliarg1", "asub", "--asub-opt", "5", "bsub"], "-"
+ ) == ["--bsub-opt"]
+ assert choices_without_help(cli, ["cliarg1", "asub", "bsub"], "-") == ["--bsub-opt"]
+ assert choices_without_help(cli, ["cliarg1", "asub", "csub"], "") == [
+ "carg1",
+ "carg2",
+ ]
+ assert choices_without_help(cli, ["cliarg1", "bsub", "arg1", "csub"], "") == [
+ "carg1",
+ "carg2",
+ ]
+ assert choices_without_help(cli, ["cliarg1", "asub", "csub"], "-") == ["--csub-opt"]
+ assert choices_with_help(cli, ["cliarg1", "asub"], "b") == [("bsub", "bsub help")]
def test_argument_choice():
@click.command()
- @click.argument('arg1', required=True, type=click.Choice(['arg11', 'arg12']))
- @click.argument('arg2', type=click.Choice(['arg21', 'arg22']), default='arg21')
- @click.argument('arg3', type=click.Choice(['arg', 'argument']), default='arg')
+ @click.argument("arg1", required=True, type=click.Choice(["arg11", "arg12"]))
+ @click.argument("arg2", type=click.Choice(["arg21", "arg22"]), default="arg21")
+ @click.argument("arg3", type=click.Choice(["arg", "argument"]), default="arg")
def cli():
pass
- assert choices_without_help(cli, [], '') == ['arg11', 'arg12']
- assert choices_without_help(cli, [], 'arg') == ['arg11', 'arg12']
- assert choices_without_help(cli, ['arg11'], '') == ['arg21', 'arg22']
- assert choices_without_help(cli, ['arg12', 'arg21'], '') == ['arg', 'argument']
- assert choices_without_help(cli, ['arg12', 'arg21'], 'argu') == ['argument']
+ assert choices_without_help(cli, [], "") == ["arg11", "arg12"]
+ assert choices_without_help(cli, [], "arg") == ["arg11", "arg12"]
+ assert choices_without_help(cli, ["arg11"], "") == ["arg21", "arg22"]
+ assert choices_without_help(cli, ["arg12", "arg21"], "") == ["arg", "argument"]
+ assert choices_without_help(cli, ["arg12", "arg21"], "argu") == ["argument"]
def test_option_choice():
@click.command()
- @click.option('--opt1', type=click.Choice(['opt11', 'opt12']), help='opt1 help')
- @click.option('--opt2', type=click.Choice(['opt21', 'opt22']), default='opt21')
- @click.option('--opt3', type=click.Choice(['opt', 'option']))
+ @click.option("--opt1", type=click.Choice(["opt11", "opt12"]), help="opt1 help")
+ @click.option("--opt2", type=click.Choice(["opt21", "opt22"]), default="opt21")
+ @click.option("--opt3", type=click.Choice(["opt", "option"]))
def cli():
pass
- assert choices_with_help(cli, [], '-') == [('--opt1', 'opt1 help'),
- ('--opt2', None),
- ('--opt3', None)]
- assert choices_without_help(cli, [], '--opt') == ['--opt1', '--opt2', '--opt3']
- assert choices_without_help(cli, [], '--opt1=') == ['opt11', 'opt12']
- assert choices_without_help(cli, [], '--opt2=') == ['opt21', 'opt22']
- assert choices_without_help(cli, ['--opt2'], '=') == ['opt21', 'opt22']
- assert choices_without_help(cli, ['--opt2', '='], 'opt') == ['opt21', 'opt22']
- assert choices_without_help(cli, ['--opt1'], '') == ['opt11', 'opt12']
- assert choices_without_help(cli, ['--opt2'], '') == ['opt21', 'opt22']
- assert choices_without_help(cli, ['--opt1', 'opt11', '--opt2'], '') == ['opt21', 'opt22']
- assert choices_without_help(cli, ['--opt2', 'opt21'], '-') == ['--opt1', '--opt3']
- assert choices_without_help(cli, ['--opt1', 'opt11'], '-') == ['--opt2', '--opt3']
- assert choices_without_help(cli, ['--opt1'], 'opt') == ['opt11', 'opt12']
- assert choices_without_help(cli, ['--opt3'], 'opti') == ['option']
-
- assert choices_without_help(cli, ['--opt1', 'invalid_opt'], '-') == ['--opt2', '--opt3']
+ assert choices_with_help(cli, [], "-") == [
+ ("--opt1", "opt1 help"),
+ ("--opt2", None),
+ ("--opt3", None),
+ ]
+ assert choices_without_help(cli, [], "--opt") == ["--opt1", "--opt2", "--opt3"]
+ assert choices_without_help(cli, [], "--opt1=") == ["opt11", "opt12"]
+ assert choices_without_help(cli, [], "--opt2=") == ["opt21", "opt22"]
+ assert choices_without_help(cli, ["--opt2"], "=") == ["opt21", "opt22"]
+ assert choices_without_help(cli, ["--opt2", "="], "opt") == ["opt21", "opt22"]
+ assert choices_without_help(cli, ["--opt1"], "") == ["opt11", "opt12"]
+ assert choices_without_help(cli, ["--opt2"], "") == ["opt21", "opt22"]
+ assert choices_without_help(cli, ["--opt1", "opt11", "--opt2"], "") == [
+ "opt21",
+ "opt22",
+ ]
+ assert choices_without_help(cli, ["--opt2", "opt21"], "-") == ["--opt1", "--opt3"]
+ assert choices_without_help(cli, ["--opt1", "opt11"], "-") == ["--opt2", "--opt3"]
+ assert choices_without_help(cli, ["--opt1"], "opt") == ["opt11", "opt12"]
+ assert choices_without_help(cli, ["--opt3"], "opti") == ["option"]
+
+ assert choices_without_help(cli, ["--opt1", "invalid_opt"], "-") == [
+ "--opt2",
+ "--opt3",
+ ]
def test_option_and_arg_choice():
@click.command()
- @click.option('--opt1', type=click.Choice(['opt11', 'opt12']))
- @click.argument('arg1', required=False, type=click.Choice(['arg11', 'arg12']))
- @click.option('--opt2', type=click.Choice(['opt21', 'opt22']))
+ @click.option("--opt1", type=click.Choice(["opt11", "opt12"]))
+ @click.argument("arg1", required=False, type=click.Choice(["arg11", "arg12"]))
+ @click.option("--opt2", type=click.Choice(["opt21", "opt22"]))
def cli():
pass
- assert choices_without_help(cli, ['--opt1'], '') == ['opt11', 'opt12']
- assert choices_without_help(cli, [''], '--opt1=') == ['opt11', 'opt12']
- assert choices_without_help(cli, [], '') == ['arg11', 'arg12']
- assert choices_without_help(cli, ['--opt2'], '') == ['opt21', 'opt22']
- assert choices_without_help(cli, ['arg11'], '--opt') == ['--opt1', '--opt2']
- assert choices_without_help(cli, [], '--opt') == ['--opt1', '--opt2']
+ assert choices_without_help(cli, ["--opt1"], "") == ["opt11", "opt12"]
+ assert choices_without_help(cli, [""], "--opt1=") == ["opt11", "opt12"]
+ assert choices_without_help(cli, [], "") == ["arg11", "arg12"]
+ assert choices_without_help(cli, ["--opt2"], "") == ["opt21", "opt22"]
+ assert choices_without_help(cli, ["arg11"], "--opt") == ["--opt1", "--opt2"]
+ assert choices_without_help(cli, [], "--opt") == ["--opt1", "--opt2"]
def test_boolean_flag_choice():
@click.command()
- @click.option('--shout/--no-shout', default=False)
- @click.argument('arg', required=False, type=click.Choice(['arg1', 'arg2']))
+ @click.option("--shout/--no-shout", default=False)
+ @click.argument("arg", required=False, type=click.Choice(["arg1", "arg2"]))
def cli(local_opt):
pass
- assert choices_without_help(cli, [], '-') == ['--shout', '--no-shout']
- assert choices_without_help(cli, ['--shout'], '') == ['arg1', 'arg2']
+ assert choices_without_help(cli, [], "-") == ["--shout", "--no-shout"]
+ assert choices_without_help(cli, ["--shout"], "") == ["arg1", "arg2"]
def test_multi_value_option_choice():
@click.command()
- @click.option('--pos', nargs=2, type=click.Choice(['pos1', 'pos2']))
- @click.argument('arg', required=False, type=click.Choice(['arg1', 'arg2']))
+ @click.option("--pos", nargs=2, type=click.Choice(["pos1", "pos2"]))
+ @click.argument("arg", required=False, type=click.Choice(["arg1", "arg2"]))
def cli(local_opt):
pass
- assert choices_without_help(cli, ['--pos'], '') == ['pos1', 'pos2']
- assert choices_without_help(cli, ['--pos', 'pos1'], '') == ['pos1', 'pos2']
- assert choices_without_help(cli, ['--pos', 'pos1', 'pos2'], '') == ['arg1', 'arg2']
- assert choices_without_help(cli, ['--pos', 'pos1', 'pos2', 'arg1'], '') == []
+ assert choices_without_help(cli, ["--pos"], "") == ["pos1", "pos2"]
+ assert choices_without_help(cli, ["--pos", "pos1"], "") == ["pos1", "pos2"]
+ assert choices_without_help(cli, ["--pos", "pos1", "pos2"], "") == ["arg1", "arg2"]
+ assert choices_without_help(cli, ["--pos", "pos1", "pos2", "arg1"], "") == []
def test_multi_option_choice():
@click.command()
- @click.option('--message', '-m', multiple=True, type=click.Choice(['m1', 'm2']))
- @click.argument('arg', required=False, type=click.Choice(['arg1', 'arg2']))
+ @click.option("--message", "-m", multiple=True, type=click.Choice(["m1", "m2"]))
+ @click.argument("arg", required=False, type=click.Choice(["arg1", "arg2"]))
def cli(local_opt):
pass
- assert choices_without_help(cli, ['-m'], '') == ['m1', 'm2']
- assert choices_without_help(cli, ['-m', 'm1', '-m'], '') == ['m1', 'm2']
- assert choices_without_help(cli, ['-m', 'm1'], '') == ['arg1', 'arg2']
+ assert choices_without_help(cli, ["-m"], "") == ["m1", "m2"]
+ assert choices_without_help(cli, ["-m", "m1", "-m"], "") == ["m1", "m2"]
+ assert choices_without_help(cli, ["-m", "m1"], "") == ["arg1", "arg2"]
def test_variadic_argument_choice():
@click.command()
- @click.option('--opt', type=click.Choice(['opt1', 'opt2']))
- @click.argument('src', nargs=-1, type=click.Choice(['src1', 'src2']))
+ @click.option("--opt", type=click.Choice(["opt1", "opt2"]))
+ @click.argument("src", nargs=-1, type=click.Choice(["src1", "src2"]))
def cli(local_opt):
pass
- assert choices_without_help(cli, ['src1', 'src2'], '') == ['src1', 'src2']
- assert choices_without_help(cli, ['src1', 'src2'], '--o') == ['--opt']
- assert choices_without_help(cli, ['src1', 'src2', '--opt'], '') == ['opt1', 'opt2']
- assert choices_without_help(cli, ['src1', 'src2'], '') == ['src1', 'src2']
+ assert choices_without_help(cli, ["src1", "src2"], "") == ["src1", "src2"]
+ assert choices_without_help(cli, ["src1", "src2"], "--o") == ["--opt"]
+ assert choices_without_help(cli, ["src1", "src2", "--opt"], "") == ["opt1", "opt2"]
+ assert choices_without_help(cli, ["src1", "src2"], "") == ["src1", "src2"]
def test_variadic_argument_complete():
-
def _complete(ctx, args, incomplete):
- return ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz']
+ return ["abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz"]
@click.group()
def entrypoint():
pass
@click.command()
- @click.option('--opt', autocompletion=_complete)
- @click.argument('arg', nargs=-1)
+ @click.option("--opt", autocompletion=_complete)
+ @click.argument("arg", nargs=-1)
def subcommand(opt, arg):
pass
entrypoint.add_command(subcommand)
- assert choices_without_help(entrypoint, ['subcommand', '--opt'], '') == _complete(0,0,0)
- assert choices_without_help(entrypoint, ['subcommand', 'whatever', '--opt'], '') == _complete(0,0,0)
- assert choices_without_help(entrypoint, ['subcommand', 'whatever', '--opt', 'abc'], '') == []
+ assert choices_without_help(entrypoint, ["subcommand", "--opt"], "") == _complete(
+ 0, 0, 0
+ )
+ assert choices_without_help(
+ entrypoint, ["subcommand", "whatever", "--opt"], ""
+ ) == _complete(0, 0, 0)
+ assert (
+ choices_without_help(entrypoint, ["subcommand", "whatever", "--opt", "abc"], "")
+ == []
+ )
def test_long_chain_choice():
@@ -304,19 +344,25 @@ def test_long_chain_choice():
pass
@cli.group()
- @click.option('--sub-opt', type=click.Choice(['subopt1', 'subopt2']))
- @click.argument('sub-arg', required=False, type=click.Choice(['subarg1', 'subarg2']))
+ @click.option("--sub-opt", type=click.Choice(["subopt1", "subopt2"]))
+ @click.argument(
+ "sub-arg", required=False, type=click.Choice(["subarg1", "subarg2"])
+ )
def sub(sub_opt, sub_arg):
pass
- @sub.command(short_help='bsub help')
- @click.option('--bsub-opt', type=click.Choice(['bsubopt1', 'bsubopt2']))
- @click.argument('bsub-arg1', required=False, type=click.Choice(['bsubarg1', 'bsubarg2']))
- @click.argument('bbsub-arg2', required=False, type=click.Choice(['bbsubarg1', 'bbsubarg2']))
+ @sub.command(short_help="bsub help")
+ @click.option("--bsub-opt", type=click.Choice(["bsubopt1", "bsubopt2"]))
+ @click.argument(
+ "bsub-arg1", required=False, type=click.Choice(["bsubarg1", "bsubarg2"])
+ )
+ @click.argument(
+ "bbsub-arg2", required=False, type=click.Choice(["bbsubarg1", "bbsubarg2"])
+ )
def bsub(bsub_opt):
pass
- @sub.group('csub')
+ @sub.group("csub")
def csub():
pass
@@ -324,24 +370,42 @@ def test_long_chain_choice():
def dsub():
pass
- assert choices_with_help(cli, ['sub', 'subarg1'], '') == [('bsub', 'bsub help'), ('csub', '')]
- assert choices_without_help(cli, ['sub'], '') == ['subarg1', 'subarg2']
- assert choices_without_help(cli, ['sub', '--sub-opt'], '') == ['subopt1', 'subopt2']
- assert choices_without_help(cli, ['sub', '--sub-opt', 'subopt1'], '') == \
- ['subarg1', 'subarg2']
- assert choices_without_help(cli,
- ['sub', '--sub-opt', 'subopt1', 'subarg1', 'bsub'], '-') == ['--bsub-opt']
- assert choices_without_help(cli,
- ['sub', '--sub-opt', 'subopt1', 'subarg1', 'bsub'], '') == ['bsubarg1', 'bsubarg2']
- assert choices_without_help(cli,
- ['sub', '--sub-opt', 'subopt1', 'subarg1', 'bsub', '--bsub-opt'], '') == \
- ['bsubopt1', 'bsubopt2']
- assert choices_without_help(cli,
- ['sub', '--sub-opt', 'subopt1', 'subarg1', 'bsub', '--bsub-opt', 'bsubopt1', 'bsubarg1'],
- '') == ['bbsubarg1', 'bbsubarg2']
- assert choices_without_help(cli,
- ['sub', '--sub-opt', 'subopt1', 'subarg1', 'csub'],
- '') == ['dsub']
+ assert choices_with_help(cli, ["sub", "subarg1"], "") == [
+ ("bsub", "bsub help"),
+ ("csub", ""),
+ ]
+ assert choices_without_help(cli, ["sub"], "") == ["subarg1", "subarg2"]
+ assert choices_without_help(cli, ["sub", "--sub-opt"], "") == ["subopt1", "subopt2"]
+ assert choices_without_help(cli, ["sub", "--sub-opt", "subopt1"], "") == [
+ "subarg1",
+ "subarg2",
+ ]
+ assert choices_without_help(
+ cli, ["sub", "--sub-opt", "subopt1", "subarg1", "bsub"], "-"
+ ) == ["--bsub-opt"]
+ assert choices_without_help(
+ cli, ["sub", "--sub-opt", "subopt1", "subarg1", "bsub"], ""
+ ) == ["bsubarg1", "bsubarg2"]
+ assert choices_without_help(
+ cli, ["sub", "--sub-opt", "subopt1", "subarg1", "bsub", "--bsub-opt"], ""
+ ) == ["bsubopt1", "bsubopt2"]
+ assert choices_without_help(
+ cli,
+ [
+ "sub",
+ "--sub-opt",
+ "subopt1",
+ "subarg1",
+ "bsub",
+ "--bsub-opt",
+ "bsubopt1",
+ "bsubarg1",
+ ],
+ "",
+ ) == ["bbsubarg1", "bbsubarg2"]
+ assert choices_without_help(
+ cli, ["sub", "--sub-opt", "subopt1", "subarg1", "csub"], ""
+ ) == ["dsub"]
def test_chained_multi():
@@ -369,16 +433,16 @@ def test_chained_multi():
def esub():
pass
- assert choices_without_help(cli, ['sub'], '') == ['bsub', 'csub']
- assert choices_without_help(cli, ['sub'], 'c') == ['csub']
- assert choices_without_help(cli, ['sub', 'csub'], '') == ['dsub', 'esub']
- assert choices_without_help(cli, ['sub', 'csub', 'dsub'], '') == ['esub']
+ assert choices_without_help(cli, ["sub"], "") == ["bsub", "csub"]
+ assert choices_without_help(cli, ["sub"], "c") == ["csub"]
+ assert choices_without_help(cli, ["sub", "csub"], "") == ["dsub", "esub"]
+ assert choices_without_help(cli, ["sub", "csub", "dsub"], "") == ["esub"]
def test_hidden():
@click.group()
- @click.option('--name', hidden=True)
- @click.option('--choices', type=click.Choice([1, 2]), hidden=True)
+ @click.option("--name", hidden=True)
+ @click.option("--choices", type=click.Choice([1, 2]), hidden=True)
def cli(name):
pass
@@ -395,20 +459,20 @@ def test_hidden():
pass
@cli.command(hidden=True)
- @click.option('--hname')
+ @click.option("--hname")
def hsub():
pass
- assert choices_without_help(cli, [], '--n') == []
- assert choices_without_help(cli, [], '--c') == []
+ assert choices_without_help(cli, [], "--n") == []
+ assert choices_without_help(cli, [], "--c") == []
# If the user exactly types out the hidden param, complete its options.
- assert choices_without_help(cli, ['--choices'], '') == [1, 2]
- assert choices_without_help(cli, [], '') == ['asub']
- assert choices_without_help(cli, [], '') == ['asub']
- assert choices_without_help(cli, [], 'h') == []
+ assert choices_without_help(cli, ["--choices"], "") == [1, 2]
+ assert choices_without_help(cli, [], "") == ["asub"]
+ assert choices_without_help(cli, [], "") == ["asub"]
+ assert choices_without_help(cli, [], "h") == []
# If the user exactly types out the hidden command, complete its subcommands.
- assert choices_without_help(cli, ['hgroup'], '') == ['hgroupsub']
- assert choices_without_help(cli, ['hsub'], '--h') == ['--hname']
+ assert choices_without_help(cli, ["hgroup"], "") == ["hgroupsub"]
+ assert choices_without_help(cli, ["hsub"], "--h") == ["--hname"]
@pytest.mark.parametrize(