Software /
code /
prosody
Comparison
spec/util_argparse_spec.lua @ 11843:d2a939e21671
util.argparse: Tests
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 12 Oct 2021 14:48:21 +0200 |
child | 11845:97c1399720c2 |
comparison
equal
deleted
inserted
replaced
11842:c20ff585e966 | 11843:d2a939e21671 |
---|---|
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); |