def test_render_description(io): config = ApplicationConfig() config.set_help("The help for {script_name}\n\nSecond paragraph") app = ConsoleApplication(config) help = ApplicationHelp(app) help.render(io) expected = """\ Console Tool USAGE console <command> [<arg1>] ... [<argN>] ARGUMENTS <command> The command to execute <arg> The arguments of the command DESCRIPTION The help for console Second paragraph """ assert expected == io.fetch_output()
def test_render_command_with_anonymous_sub_command(io): config = ApplicationConfig() config.set_name("test-bin") with config.command("command") as c: with c.sub_command("add") as sc1: sc1.anonymous() sc1.set_description('Description of "add"') sc1.add_argument("argument", 0, 'Description of "argument"') with c.sub_command("delete") as sc2: sc2.set_description('Description of "delete"') app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command [<argument>] or: test-bin command delete COMMANDS delete Description of "delete" """ assert expected == io.fetch_output()
def test_render_global_options_with_preferred_long_name(io): config = ApplicationConfig() config.add_option("global-option", "g", Option.PREFER_LONG_NAME, 'Description of "global-option"') app = ConsoleApplication(config) help = ApplicationHelp(app) help.render(io) expected = """\ Console Tool USAGE console [--global-option] <command> [<arg1>] ... [<argN>] ARGUMENTS <command> The command to execute <arg> The arguments of the command GLOBAL OPTIONS --global-option (-g) Description of "global-option" """ assert expected == io.fetch_output()
def test_sort_sub_commands(io): config = ApplicationConfig() config.set_name("test-bin") with config.command("command") as c: c.create_sub_command("sub3") c.create_sub_command("sub1") c.create_sub_command("sub2") app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command or: test-bin command sub3 or: test-bin command sub1 or: test-bin command sub2 COMMANDS sub1 sub2 sub3 """ assert expected == io.fetch_output()
def test_render_option_with_named_value(io): config = ApplicationConfig() config.set_name("test-bin") with config.command("command") as c: c.add_option( "option", None, Option.OPTIONAL_VALUE, 'Description of "option"', value_name="value", ) app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command [--option{}[<value>]] OPTIONS --option Description of "option" """.format(nbsp) assert expected == io.fetch_output()
def test_render_option_with_optional_value_long_name_preferred(io): config = ApplicationConfig() config.set_name("test-bin") with config.command("command") as c: c.add_option( "option", "o", Option.OPTIONAL_VALUE | Option.PREFER_LONG_NAME, 'Description of "option"', ) app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command [--option{}[<...>]] OPTIONS --option (-o) Description of "option" """.format(nbsp) assert expected == io.fetch_output()
def test_sort_commands(io): config = ApplicationConfig("test-bin") config.set_display_name("The Application") config.create_command("command3") config.create_command("command1") config.create_command("command2") app = ConsoleApplication(config) help = ApplicationHelp(app) help.render(io) expected = """\ The Application USAGE test-bin <command> [<arg1>] ... [<argN>] ARGUMENTS <command> The command to execute <arg> The arguments of the command AVAILABLE COMMANDS command1 command2 command3 """ assert expected == io.fetch_output()
def test_render_version(io): config = ApplicationConfig("test-bin", "1.2.3") config.set_display_name("The Application") app = ConsoleApplication(config) help = ApplicationHelp(app) help.render(io) expected = """\ The Application version 1.2.3 USAGE test-bin <command> [<arg1>] ... [<argN>] ARGUMENTS <command> The command to execute <arg> The arguments of the command """ assert expected == io.fetch_output()
def test_render(io): config = ApplicationConfig() config.set_name("test-bin") config.add_argument("global-argument", 0, 'Description of "global-argument"') config.add_option("global-option", None, 0, 'Description of "global-option"') with config.command("command") as c: c.set_description('Description of "command"') c.set_help( 'Help of "command {command_name} of {script_name}"\n\nSecond paragraph' ) c.add_alias("command-alias") c.add_argument("argument", 0, 'Description of "argument"') c.add_option("option", None, 0, 'Description of "option"') app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command [--option] [<global-argument>] [<argument>] aliases: command-alias ARGUMENTS <global-argument> Description of "global-argument" <argument> Description of "argument" OPTIONS --option Description of "option" GLOBAL OPTIONS --global-option Description of "global-option" DESCRIPTION Help of "command command of test-bin" Second paragraph """ assert expected == io.fetch_output()
def test_render_required_argument(io): config = ApplicationConfig() config.set_name("test-bin") with config.command("command") as c: c.add_argument("argument", Argument.REQUIRED, 'Description of "argument"') app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command <argument> ARGUMENTS <argument> Description of "argument" """ assert expected == io.fetch_output()
def test_render_default_no_name(io): config = ApplicationConfig() app = ConsoleApplication(config) help = ApplicationHelp(app) help.render(io) expected = """\ Console Tool USAGE console <command> [<arg1>] ... [<argN>] ARGUMENTS <command> The command to execute <arg> The arguments of the command """ assert expected == io.fetch_output()
def test_render(io): config = ApplicationConfig("test-bin") config.set_display_name("The Application") config.add_argument("global-argument", description='Description of "global-argument"') config.add_option("global-option", description='Description of "global-option"') with config.command("command1") as c: c.set_description('Description of "command1"') with config.command("command2") as c: c.set_description('Description of "command2"') with config.command("longer-command3") as c: c.set_description('Description of "longer-command3"') app = ConsoleApplication(config) help = ApplicationHelp(app) help.render(io) expected = """\ The Application USAGE test-bin [--global-option] <command> [<arg1>] ... [<argN>] ARGUMENTS <command> The command to execute <arg> The arguments of the command GLOBAL OPTIONS --global-option Description of "global-option" AVAILABLE COMMANDS command1 Description of "command1" command2 Description of "command2" longer-command3 Description of "longer-command3" """ assert expected == io.fetch_output()
def test_render_command_with_sub_commands(io): config = ApplicationConfig() config.set_name("test-bin") config.add_option("global-option", "g", description='Description of "global-option"') with config.command("command") as c: c.add_argument("argument", 0, 'Description of "argument"') c.add_option("option", None, 0, 'Description of "option"') with c.sub_command("add") as sc1: sc1.set_description('Description of "add"') sc1.add_argument("sub-argument1", 0, 'Description of "sub-argument1"') sc1.add_argument("sub-argument2", 0, 'Description of "sub-argument2"') sc1.add_option("sub-option1", "o", 0, 'Description of "sub-option1"') sc1.add_option("sub-option2", None, 0, 'Description of "sub-option2"') with c.sub_command("delete") as sc2: sc2.set_description('Description of "delete"') app = ConsoleApplication(config) help = CommandHelp(app.get_command("command")) help.render(io) expected = """\ USAGE test-bin command [--option] [<argument>] or: test-bin command add [-o] [--sub-option2] [<argument>] [<sub-argument1>] [<sub-argument2>] or: test-bin command delete [<argument>] ARGUMENTS <argument> Description of "argument" COMMANDS add Description of "add" <sub-argument1> Description of "sub-argument1" <sub-argument2> Description of "sub-argument2" -o (--sub-option1) Description of "sub-option1" --sub-option2 Description of "sub-option2" delete Description of "delete" OPTIONS --option Description of "option" GLOBAL OPTIONS -g (--global-option) Description of "global-option" """ assert expected == io.fetch_output()