# HG changeset patch # User Kim Alvefur # Date 1634042901 -7200 # Node ID d2a939e216713603572e7223995543e112a5ee95 # Parent c20ff585e966195d6a594f52dd49b60903510af4 util.argparse: Tests diff -r c20ff585e966 -r d2a939e21671 spec/util_argparse_spec.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spec/util_argparse_spec.lua Tue Oct 12 14:48:21 2021 +0200 @@ -0,0 +1,46 @@ +describe("parse", function() + local parse + setup(function() parse = require"util.argparse".parse; end); + + it("works", function() + -- basic smoke test + local opts = parse({ "--help" }); + assert.same({ help = true }, opts); + end); + + it("returns if no args", function() assert.same({}, parse({})); end); + + it("supports boolean flags", function() + local opts, err = parse({ "--foo"; "--no-bar" }); + assert.falsy(err); + assert.same({ foo = true; bar = false }, opts); + end); + + it("consumes input until the first argument", function() + local arg = { "--foo"; "bar"; "--baz" }; + local opts, err = parse(arg); + assert.falsy(err); + assert.same({ foo = true }, opts); + assert.same({ "bar"; "--baz" }, arg); + end); + + it("expands short options", function() + local opts, err = parse({ "--foo"; "-b" }, { short_params = { b = "bar" } }); + assert.falsy(err); + assert.same({ foo = true; bar = true }, opts); + end); + + it("supports value arguments", function() + local opts, err = parse({ "--foo"; "bar"; "--baz=moo" }, { value_params = { foo = true; bar = true } }); + assert.falsy(err); + assert.same({ foo = "bar"; baz = "moo" }, opts); + end); + + it("demands values for value params", function() + local opts, err, where = parse({ "--foo" }, { value_params = { foo = true } }); + assert.falsy(opts); + assert.equal("missing-value", err); + assert.equal("--foo", where); + end); + +end);