def test_float_list_mixed(): parser = clio.ArgParser() parser.add_float_list("float f") parser.parse(["--float", "1.1", "2.2", "-f", "3.3"]) assert parser.len_list("float") == 2 assert parser.get_str_list("float")[0] == 1.1 assert parser.get_str_list("float")[1] == 3.3
def test_positional_args(): parser = clio.ArgParser() parser.parse(["foo", "bar"]) assert parser.has_args() == True assert parser.len_args() == 2 assert parser.get_arg(0) == "foo" assert parser.get_arg(1) == "bar"
def cli(): parser = clio.ArgParser(helptext, ark.meta.__version__) cmd_build = parser.add_cmd("build", build.callback, build.helptext) cmd_build.add_flag("clear", "c") cmd_build.add_str_opt("out", None, "o") cmd_build.add_str_opt("src", None, "s") cmd_build.add_str_opt("lib", None, "l") cmd_build.add_str_opt("inc", None, "i") cmd_build.add_str_opt("theme", None, "t") cmd_serve = parser.add_cmd("serve", serve.callback, serve.helptext) cmd_serve.add_flag("browser", "b") cmd_serve.add_str_opt("host", "localhost", "h") cmd_serve.add_int_opt("port", 8080, "p") cmd_init = parser.add_cmd("init", init.callback, init.helptext) cmd_init.add_flag("empty", "e") parser.add_cmd("clear", clear.callback, clear.helptext) parser.add_cmd("edit", edit.callback, edit.helptext) parser.add_cmd("watch", watch.callback, watch.helptext) ark.hooks.event('init_clio', parser) parser.parse() if not parser.has_cmd(): parser.help()
def test_int_list_mixed(): parser = clio.ArgParser() parser.add_int_list("int i") parser.parse(["--int", "123", "456", "-i", "789"]) assert parser.len_list("int") == 2 assert parser.get_str_list("int")[0] == 123 assert parser.get_str_list("int")[1] == 789
def test_string_list_mixed(): parser = clio.ArgParser() parser.add_str_list("string s") parser.parse(["--string", "foo", "bar", "-s", "baz"]) assert parser.len_list("string") == 2 assert parser.get_str_list("string")[0] == "foo" assert parser.get_str_list("string")[1] == "baz"
def test_command_present(): parser = clio.ArgParser() cmd_parser = parser.add_cmd("cmd", "helptext", lambda p: None) parser.parse(["cmd"]) assert parser.has_cmd() == True assert parser.get_cmd_name() == "cmd" assert parser.get_cmd_parser() == cmd_parser
def test_multi_options_shortform(): parser = clio.ArgParser() parser.add_flag("bool1") parser.add_flag("bool2 b") parser.add_str("string1", "default1") parser.add_str("string2 s", "default2") parser.add_int("int1", 101) parser.add_int("int2 i", 202,) parser.add_float("float1", 1.1) parser.add_float("float2 f", 2.2) parser.parse([ "--bool1", "-b", "--string1", "value1", "-s", "value2", "--int1", "303", "-i", "404", "--float1", "3.3", "-f", "4.4", ]) assert parser.get_flag("bool1") == True assert parser.get_flag("bool2") == True assert parser.get_str("string1") == "value1" assert parser.get_str("string2") == "value2" assert parser.get_int("int1") == 303 assert parser.get_int("int2") == 404 assert parser.get_float("float1") == 3.3 assert parser.get_float("float2") == 4.4
def cli(): parser = clio.ArgParser(apphelp, meta.__version__) build_parser = parser.add_cmd("build", cmd_build, buildhelp) build_parser.add_flag("clear", "c") build_parser.add_str_opt("out", None, "o") build_parser.add_str_opt("src", None, "s") build_parser.add_str_opt("lib", None, "l") build_parser.add_str_opt("inc", None, "i") build_parser.add_str_opt("theme", None, "t") serve_parser = parser.add_cmd("serve", cmd_serve, servehelp) serve_parser.add_flag("browser", "b") serve_parser.add_str_opt("host", "localhost", "h") serve_parser.add_int_opt("port", 8080, "p") init_parser = parser.add_cmd("init", cmd_init, inithelp) init_parser.add_flag("empty", "e") clear_parser = parser.add_cmd("clear", cmd_clear, clearhelp) edit_parser = parser.add_cmd("edit", cmd_edit, edithelp) watch_parser = parser.add_cmd("watch", cmd_watch, watchhelp) hooks.event('init_clio', parser) parser.parse() if not parser.has_cmd(): parser.help()
def test_float_greedy_list_shortform(): parser = clio.ArgParser() parser.add_float_list("float f", True) parser.parse(["-f", "1.1", "2.2", "-f", "3.3"]) assert parser.len_list("float") == 3 assert parser.get_str_list("float")[0] == 1.1 assert parser.get_str_list("float")[1] == 2.2 assert parser.get_str_list("float")[2] == 3.3
def test_int_greedy_list_shortform(): parser = clio.ArgParser() parser.add_int_list("int i", True) parser.parse(["-i", "123", "456", "-i", "789"]) assert parser.len_list("int") == 3 assert parser.get_str_list("int")[0] == 123 assert parser.get_str_list("int")[1] == 456 assert parser.get_str_list("int")[2] == 789
def test_string_greedy_list_shortform(): parser = clio.ArgParser() parser.add_str_list("string s", True) parser.parse(["-s", "foo", "bar", "-s", "baz"]) assert parser.len_list("string") == 3 assert parser.get_str_list("string")[0] == "foo" assert parser.get_str_list("string")[1] == "bar" assert parser.get_str_list("string")[2] == "baz"
def test_condensed_options(): parser = clio.ArgParser() parser.add_flag("bool b") parser.add_str("string s", "default") parser.add_int("int i", 101) parser.add_float("float f", 1.1) parser.parse(["-bsif", "value", "202", "2.2"]) assert parser["bool"] == True assert parser["string"] == "value" assert parser["int"] == 202 assert parser["float"] == 2.2
def parse(): global parser # Root parser. parser = clio.ArgParser(helptext, ivy.__version__) # Register the 'build' command. cmd_build = parser.add_cmd("build", build.helptext, build.callback) cmd_build.add_flag("clear c") cmd_build.add_str("out o", None) cmd_build.add_str("src s", None) cmd_build.add_str("lib l", None) cmd_build.add_str("inc i", None) cmd_build.add_str("res r", None) cmd_build.add_str("theme t", None) # Register the 'clear' command. parser.add_cmd("clear", clear.helptext, clear.callback) # Register the 'init' command. parser.add_cmd("init", init.helptext, init.callback) # Register the 'serve' command. cmd_serve = parser.add_cmd("serve", serve.helptext, serve.callback) cmd_serve.add_flag("no-browser") cmd_serve.add_str("directory d", None) cmd_serve.add_str("host h", "localhost") cmd_serve.add_int("port p", 0) cmd_serve.add_str("b browser", None) # Register the 'watch' command. cmd_watch = parser.add_cmd("watch", watch.helptext, watch.callback) cmd_watch.add_flag("clear c") cmd_watch.add_str("out o", None) cmd_watch.add_str("src s", None) cmd_watch.add_str("lib l", None) cmd_watch.add_str("inc i", None) cmd_watch.add_str("res r", None) cmd_watch.add_str("theme t", None) cmd_watch.add_flag("view v") # Fire the 'cli' event. Plugins can use this event to register their own # custom commands and options. ivy.hooks.event('cli', parser) # Parse the application's command line arguments. parser.parse()
def test_multi_options_empty(): parser = clio.ArgParser() parser.add_flag("bool1") parser.add_flag("bool2 b") parser.add_str("string1", "default1") parser.add_str("string2 s", "default2") parser.add_int("int1", 101) parser.add_int("int2 i", 202,) parser.add_float("float1", 1.1) parser.add_float("float2 f", 2.2) parser.parse([]) assert parser.get_flag("bool1") == False assert parser.get_flag("bool2") == False assert parser.get_str("string1") == "default1" assert parser.get_str("string2") == "default2" assert parser.get_int("int1") == 101 assert parser.get_int("int2") == 202 assert parser.get_float("float1") == 1.1 assert parser.get_float("float2") == 2.2
def test_command_with_options(): parser = clio.ArgParser() cmd_parser = parser.add_cmd("cmd", "helptext", lambda p: None) cmd_parser.add_flag("bool") cmd_parser.add_str("string", "default") cmd_parser.add_int("int", 101) cmd_parser.add_float("float", 1.1) parser.parse([ "cmd", "foo", "bar", "--string", "value", "--int", "202", "--float", "2.2", ]) assert parser.has_cmd() == True assert parser.get_cmd_name() == "cmd" assert parser.get_cmd_parser() == cmd_parser assert cmd_parser.has_args() == True assert cmd_parser.len_args() == 2 assert cmd_parser["string"] == "value" assert cmd_parser["int"] == 202 assert cmd_parser["float"] == 2.2
def test_bool_list_mixed(): parser = clio.ArgParser() parser.add_flag_list("bool b") parser.parse(["--bool", "-bb"]) assert parser.len_list("bool") == 3
def test_bool_list_shortform(): parser = clio.ArgParser() parser.add_flag_list("bool b") parser.parse(["-b", "-bb"]) assert parser.len_list("bool") == 3
def test_command_absent(): parser = clio.ArgParser() cmd_parser = parser.add_cmd("cmd", "helptext", lambda p: None) parser.parse([]) assert parser.has_cmd() == False
def test_option_parsing_switch(): parser = clio.ArgParser() parser.parse(["foo", "--", "--bar", "--baz"]) assert parser.len_args() == 3
def test_positional_args_as_floats(): parser = clio.ArgParser() parser.parse(["1.1", "11.1"]) assert parser.get_args_as_floats()[0] == 1.1 assert parser.get_args_as_floats()[1] == 11.1
def test_bool_list_longform(): parser = clio.ArgParser() parser.add_flag_list("bool") parser.parse(["--bool", "--bool", "--bool"]) assert parser.len_list("bool") == 3
def test_positional_args_list_syntax(): parser = clio.ArgParser() parser.parse(["foo", "bar"]) assert parser[0] == "foo" assert parser[1] == "bar"
def test_float_list_missing(): parser = clio.ArgParser() parser.add_int_list("float") parser.parse([]) assert parser.len_list("float") == 0
def test_positional_args_empty(): parser = clio.ArgParser() parser.parse([]) assert parser.has_args() == False
def test_unrecognised_shortform_option(): parser = clio.ArgParser() with pytest.raises(SystemExit): parser.parse(["-f"])
def test_bool_option_dict_syntax(): parser = clio.ArgParser() parser.add_flag("bool") parser.parse(["--bool"]) assert parser["bool"] == True
def test_string_option_empty(): parser = clio.ArgParser() parser.add_str("string", "default") parser.parse([]) assert parser.get_str("string") == "default"
def test_bool_list_empty(): parser = clio.ArgParser() parser.add_flag_list("bool") parser.parse([]) assert parser.len_list("bool") == 0
def test_string_option_missing(): parser = clio.ArgParser() parser.add_str("string", "default") parser.parse(["foo", "bar"]) assert parser.get_str("string") == "default"
def test_unrecognised_longform_option(): parser = clio.ArgParser() with pytest.raises(SystemExit): parser.parse(["--foo"])