summaryrefslogtreecommitdiff
path: root/tests/cli
diff options
context:
space:
mode:
authorOpportunity <[email protected]>2020-01-15 15:16:08 +0800
committerOpportunity <[email protected]>2020-01-15 15:16:08 +0800
commit546d83dd435780a6ea69a5b24a12c06b294dd2c0 (patch)
treed9d98b7c1005dc5df4759d2a3a9d3b0f47eee606 /tests/cli
parentd7662a8916400389fca579772bfdaedadd5e640e (diff)
Fix
Diffstat (limited to 'tests/cli')
-rw-r--r--tests/cli/test.lua139
1 files changed, 139 insertions, 0 deletions
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