11843
|
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);
|
|
23 assert.same({ foo = true }, opts);
|
|
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
|
|
46 end);
|