Software / code / prosody
Annotate
spec/util_argparse_spec.lua @ 12110:b5b799a2a10c
util.id: Adjust entropy levels, with rationales
Modules using ids for logging should not need the now pretty large
medium one.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 02 Dec 2021 01:14:55 +0100 |
| parent | 11845:97c1399720c2 |
| child | 12477:cc84682b8429 |
| rev | line source |
|---|---|
| 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 | |
|
11845
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
46 it("reports where the problem is", function() |
|
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
47 local opts, err, where = parse({ "-h" }); |
|
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
48 assert.falsy(opts); |
|
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
49 assert.equal("param-not-found", err); |
|
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
50 assert.equal("-h", where, "returned where"); |
|
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
51 end); |
|
97c1399720c2
util.argparse: Add test for #1691
Kim Alvefur <zash@zash.se>
parents:
11843
diff
changeset
|
52 |
| 11843 | 53 end); |