summaryrefslogtreecommitdiff
path: root/tests/cli/test.lua
blob: 20bc0c7357b6ab5e7a4305a5eb7ec254a6c27f82 (plain)
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