1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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
|