From 546d83dd435780a6ea69a5b24a12c06b294dd2c0 Mon Sep 17 00:00:00 2001 From: Opportunity Date: Wed, 15 Jan 2020 15:16:08 +0800 Subject: Fix --- tests/cli/test.lua | 139 +++++++++++++++++++++++++++++++++++++++++++++ tests/modules/cli/test.lua | 139 --------------------------------------------- xmake/core/base/cli.lua | 2 +- xmake/core/base/option.lua | 5 +- xmake/core/main.lua | 2 +- 5 files changed, 142 insertions(+), 145 deletions(-) create mode 100644 tests/cli/test.lua delete mode 100644 tests/modules/cli/test.lua diff --git a/tests/cli/test.lua b/tests/cli/test.lua new file mode 100644 index 000000000..20bc0c735 --- /dev/null +++ b/tests/cli/test.lua @@ -0,0 +1,139 @@ +import("core.base.cli") + +function test_args(t) + local parsed = cli.parse("abc def") + t:are_equal(#parsed, 2) + t:are_equal(parsed[1].type, "arg") + t:are_equal(parsed[1].value, "abc") + t:are_equal(parsed[2].type, "arg") + t:are_equal(parsed[2].value, "def") +end + +function test_args_escaped(t) + local parsed = cli.parse([[a\\bc "def \"g"]]) + t:are_equal(#parsed, 2) + t:are_equal(parsed[1].type, "arg") + t:are_equal(parsed[1].value, "a\\bc") + t:are_equal(parsed[2].type, "arg") + t:are_equal(parsed[2].value, "def \"g") +end + +function test_long(t) + local parsed = cli.parse([[--long-flag --long-option="1 3" --long-option:=2 args]]) + t:are_equal(#parsed, 4) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "long-flag") + t:are_equal(parsed[2].type, "option") + t:are_equal(parsed[2].key, "long-option") + t:are_equal(parsed[2].value, "1 3") + t:are_equal(parsed[3].type, "option") + t:are_equal(parsed[3].key, "long-option") + t:are_equal(parsed[3].value, "=2") +end + +function test_raw(t) + local parsed = cli.parse([[--long-flag -- --long-option="1 3" --long-option:=2 args -rx]]) + t:are_equal(#parsed, 6) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "long-flag") + t:are_equal(parsed[2].type, "sep") + t:are_equal(parsed[3].type, "arg") + t:are_equal(parsed[3].value, "--long-option=1 3") + t:are_equal(parsed[4].type, "arg") + t:are_equal(parsed[4].value, "--long-option:=2") + t:are_equal(parsed[5].type, "arg") + t:are_equal(parsed[5].value, "args") + t:are_equal(parsed[6].type, "arg") + t:are_equal(parsed[6].value, "-rx") +end + +function test_short1(t) + local parsed = cli.parse([[-rx args -args]], {}) + t:are_equal(#parsed, 3) + t:are_equal(parsed[1].type, "option") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[1].value, "x") + t:are_equal(parsed[3].type, "arg") + t:are_equal(parsed[3].value, "-args") +end + +function test_short2(t) + local parsed = cli.parse([[-r x args args]], {}) + t:are_equal(#parsed, 3) + t:are_equal(parsed[1].type, "option") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[1].value, "x") +end + +function test_short3(t) + local parsed = cli.parse([[-r"x d" args args]], {}) + t:are_equal(#parsed, 3) + t:are_equal(parsed[1].type, "option") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[1].value, "x d") +end + +function test_short4(t) + local parsed = cli.parse([["-rx d" args args]], {}) + t:are_equal(#parsed, 3) + t:are_equal(parsed[1].type, "option") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[1].value, "x d") +end + +function test_short5(t) + local parsed = cli.parse([[-r "x d" args args]], {}) + t:are_equal(#parsed, 3) + t:are_equal(parsed[1].type, "option") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[1].value, "x d") +end + + +function test_short_flags1(t) + local parsed = cli.parse([[-rx args args]], {"r"}) + t:are_equal(#parsed, 3) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[2].type, "option") + t:are_equal(parsed[2].key, "x") + t:are_equal(parsed[2].value, "args") +end + +function test_short_flags2(t) + local parsed = cli.parse([[-r x args args]], {"r"}) + t:are_equal(#parsed, 4) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[2].type, "arg") + t:are_equal(parsed[2].value, "x") +end + +function test_short_flags3(t) + local parsed = cli.parse([[-r"x d" args args]], {"r"}) + t:are_equal(#parsed, 4) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[2].type, "option") + t:are_equal(parsed[2].key, "x") + t:are_equal(parsed[2].value, " d") +end + +function test_short_flags4(t) + local parsed = cli.parse([["-rx d" args args]], {"r"}) + t:are_equal(#parsed, 4) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[2].type, "option") + t:are_equal(parsed[2].key, "x") + t:are_equal(parsed[2].value, " d") +end + +function test_short_flags5(t) + local parsed = cli.parse([[-r "x d" args args]], {"r"}) + t:are_equal(#parsed, 4) + t:are_equal(parsed[1].type, "flag") + t:are_equal(parsed[1].key, "r") + t:are_equal(parsed[2].type, "arg") + t:are_equal(parsed[2].value, "x d") +end diff --git a/tests/modules/cli/test.lua b/tests/modules/cli/test.lua deleted file mode 100644 index 8b3fb58b4..000000000 --- a/tests/modules/cli/test.lua +++ /dev/null @@ -1,139 +0,0 @@ -import("core.base.cli") - -function test_args(t) - local parsed = cli.parse("abc def") - t:are_equal(#parsed, 2) - t:are_equal(parsed[1].type, "arg") - t:are_equal(parsed[1].value, "abc") - t:are_equal(parsed[2].type, "arg") - t:are_equal(parsed[2].value, "def") -end - -function test_args_escaped(t) - local parsed = cli.parse([[a\\bc "def \"g"]]) - t:are_equal(#parsed, 2) - t:are_equal(parsed[1].type, "arg") - t:are_equal(parsed[1].value, "a\\bc") - t:are_equal(parsed[2].type, "arg") - t:are_equal(parsed[2].value, "def \"g") -end - -function test_long(t) - local parsed = cli.parse([[--long-flag --long-option="1 3" --long-option:=2 args]]) - t:are_equal(#parsed, 4) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "long-flag") - t:are_equal(parsed[2].type, "option") - t:are_equal(parsed[2].key, "long-option") - t:are_equal(parsed[2].value, "1 3") - t:are_equal(parsed[3].type, "option") - t:are_equal(parsed[3].key, "long-option") - t:are_equal(parsed[3].value, "=2") -end - -function test_raw(t) - local parsed = cli.parse([[--long-flag -- --long-option="1 3" --long-option:=2 args -rx]]) - t:are_equal(#parsed, 6) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "long-flag") - t:are_equal(parsed[2].type, "sep") - t:are_equal(parsed[3].type, "arg") - t:are_equal(parsed[3].value, "--long-option=1 3") - t:are_equal(parsed[4].type, "arg") - t:are_equal(parsed[4].value, "--long-option:=2") - t:are_equal(parsed[5].type, "arg") - t:are_equal(parsed[5].value, "args") - t:are_equal(parsed[6].type, "arg") - t:are_equal(parsed[6].value, "-rx") -end - -function test_short1(t) - local parsed = cli.parse([[-rx args -args]], {}) - t:are_equal(#parsed, 3) - t:are_equal(parsed[1].type, "option") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[1].value, "x") - t:are_equal(parsed[3].type, "arg") - t:are_equal(parsed[3].value, "-args") -end - -function test_short2(t) - local parsed = cli.parse([[-r x args args]], {}) - t:are_equal(#parsed, 3) - t:are_equal(parsed[1].type, "option") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[1].value, "x") -end - -function test_short3(t) - local parsed = cli.parse([[-r"x d" args args]], {}) - t:are_equal(#parsed, 3) - t:are_equal(parsed[1].type, "option") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[1].value, "x d") -end - -function test_short4(t) - local parsed = cli.parse([["-rx d" args args]], {}) - t:are_equal(#parsed, 3) - t:are_equal(parsed[1].type, "option") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[1].value, "x d") -end - -function test_short5(t) - local parsed = cli.parse([[-r "x d" args args]], {}) - t:are_equal(#parsed, 3) - t:are_equal(parsed[1].type, "option") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[1].value, "x d") -end - - -function test_short_flags1(t) - local parsed = cli.parse([[-rx args args]], {"r"}) - t:are_equal(#parsed, 3) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[2].type, "option") - t:are_equal(parsed[2].key, "x") - t:are_equal(parsed[2].value, "args") -end - -function test_short_flags2(t) - local parsed = cli.parse([[-r x args args]], {"r"}) - t:are_equal(#parsed, 4) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[2].type, "arg") - t:are_equal(parsed[2].value, "x") -end - -function test_short_flags3(t) - local parsed = cli.parse([[-r"x d" args args]], {"r"}) - t:are_equal(#parsed, 4) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[2].type, "option") - t:are_equal(parsed[2].key, "x") - t:are_equal(parsed[2].value, " d") -end - -function test_short_flags4(t) - local parsed = cli.parse([["-rx d" args args]], {"r"}) - t:are_equal(#parsed, 4) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[2].type, "option") - t:are_equal(parsed[2].key, "x") - t:are_equal(parsed[2].value, " d") -end - -function test_short_flags5(t) - local parsed = cli.parse([[-r "x d" args args]], {"r"}) - t:are_equal(#parsed, 4) - t:are_equal(parsed[1].type, "flag") - t:are_equal(parsed[1].key, "r") - t:are_equal(parsed[2].type, "arg") - t:are_equal(parsed[2].value, "x d") -end \ No newline at end of file diff --git a/xmake/core/base/cli.lua b/xmake/core/base/cli.lua index 3e78fcdbc..a76d6db23 100644 --- a/xmake/core/base/cli.lua +++ b/xmake/core/base/cli.lua @@ -119,4 +119,4 @@ end cli._segment = segment -- return module -return cli \ No newline at end of file +return cli diff --git a/xmake/core/base/option.lua b/xmake/core/base/option.lua index c02a29659..a1f628cdb 100644 --- a/xmake/core/base/option.lua +++ b/xmake/core/base/option.lua @@ -26,8 +26,6 @@ local cli = require("base/cli") local table = require("base/table") local colors = require("base/colors") -local dump = require("base/dump") - -- ifelse, a? b : c function option._ifelse(a, b, c) if a then return b else return c end @@ -347,9 +345,8 @@ function option.parse(argv, options, opt) table.insert(o, arg.value) end else - return nil, string.format("Invalid %s: %s", arg.type, arg) + return nil, "invalid argument: " .. arg.value end - return nil, "invalid argument: " .. arg.value end end end diff --git a/xmake/core/main.lua b/xmake/core/main.lua index e0504a376..d54c56228 100644 --- a/xmake/core/main.lua +++ b/xmake/core/main.lua @@ -124,7 +124,7 @@ function main._basicparse() if xmake._ARGV[1] and not xmake._ARGV[1]:startswith('-') then -- regard it as command name xmake._COMMAND = xmake._ARGV[1] - xmake._COMMAND_ARGV = table.move(xmake._ARGV, 2, -1, 1, {}) + xmake._COMMAND_ARGV = table.move(xmake._ARGV, 2, #xmake._ARGV, 1, {}) else xmake._COMMAND_ARGV = xmake._ARGV end -- cgit v1.3.1