author | Matthew Wild <mwild1@gmail.com> |
Fri, 02 Dec 2022 20:27:32 +0000 | |
changeset 12798 | 249b01adc54a |
parent 12481 | cc84682b8429 |
child 13164 | 4ee9a912ceea |
permissions | -rw-r--r-- |
11847 | 1 |
describe("parse", function() |
2 |
local parse |
|
3 |
setup(function() parse = require"util.argparse".parse; end); |
|
4 |
||
5 |
it("works", function() |
|
6 |
-- basic smoke test |
|
7 |
local opts = parse({ "--help" }); |
|
8 |
assert.same({ help = true }, opts); |
|
9 |
end); |
|
10 |
||
11 |
it("returns if no args", function() assert.same({}, parse({})); end); |
|
12 |
||
13 |
it("supports boolean flags", function() |
|
14 |
local opts, err = parse({ "--foo"; "--no-bar" }); |
|
15 |
assert.falsy(err); |
|
16 |
assert.same({ foo = true; bar = false }, opts); |
|
17 |
end); |
|
18 |
||
19 |
it("consumes input until the first argument", function() |
|
20 |
local arg = { "--foo"; "bar"; "--baz" }; |
|
21 |
local opts, err = parse(arg); |
|
22 |
assert.falsy(err); |
|
12481
cc84682b8429
util.argparse: Revise 553c6204fe5b with a different approach
Matthew Wild <mwild1@gmail.com>
parents:
11849
diff
changeset
|
23 |
assert.same({ foo = true, "bar", "--baz" }, opts); |
11847 | 24 |
assert.same({ "bar"; "--baz" }, arg); |
25 |
end); |
|
26 |
||
27 |
it("expands short options", function() |
|
28 |
local opts, err = parse({ "--foo"; "-b" }, { short_params = { b = "bar" } }); |
|
29 |
assert.falsy(err); |
|
30 |
assert.same({ foo = true; bar = true }, opts); |
|
31 |
end); |
|
32 |
||
33 |
it("supports value arguments", function() |
|
34 |
local opts, err = parse({ "--foo"; "bar"; "--baz=moo" }, { value_params = { foo = true; bar = true } }); |
|
35 |
assert.falsy(err); |
|
36 |
assert.same({ foo = "bar"; baz = "moo" }, opts); |
|
37 |
end); |
|
38 |
||
39 |
it("demands values for value params", function() |
|
40 |
local opts, err, where = parse({ "--foo" }, { value_params = { foo = true } }); |
|
41 |
assert.falsy(opts); |
|
42 |
assert.equal("missing-value", err); |
|
43 |
assert.equal("--foo", where); |
|
44 |
end); |
|
45 |
||
11849
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
46 |
it("reports where the problem is", function() |
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
47 |
local opts, err, where = parse({ "-h" }); |
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
48 |
assert.falsy(opts); |
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
49 |
assert.equal("param-not-found", err); |
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
50 |
assert.equal("-h", where, "returned where"); |
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
51 |
end); |
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11847
diff
changeset
|
52 |
|
11847 | 53 |
end); |