mirror of
https://github.com/TangentFoxy/argparse.git
synced 2025-07-28 11:02:20 +00:00
added some tests for usage generation
This commit is contained in:
87
spec/usage_spec.lua
Normal file
87
spec/usage_spec.lua
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
local argparse = require "argparse"
|
||||||
|
|
||||||
|
describe("tests related to usage message generation", function()
|
||||||
|
it("creates correct usage message for empty parser", function()
|
||||||
|
local parser = argparse.parser "foo"
|
||||||
|
assert.equal(parser:prepare():get_usage(), "Usage: foo")
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("creates correct usage message for arguments", function()
|
||||||
|
local parser = argparse.parser "foo"
|
||||||
|
parser:argument "first"
|
||||||
|
parser:argument "second-and-third" {
|
||||||
|
args = 2
|
||||||
|
}
|
||||||
|
parser:argument "maybe-fourth" {
|
||||||
|
args = "?"
|
||||||
|
}
|
||||||
|
parser:argument "others" {
|
||||||
|
args = "*"
|
||||||
|
}
|
||||||
|
assert.equal(
|
||||||
|
[=[Usage: foo <first> <second-and-third> <second-and-third> [<maybe-fourth>] [<others>] ...]=],
|
||||||
|
parser:prepare():get_usage()
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("creates correct usage message for options", function()
|
||||||
|
local parser = argparse.parser "foo"
|
||||||
|
parser:flag "-q" "--quiet"
|
||||||
|
parser:option "--from" {
|
||||||
|
count = 1,
|
||||||
|
target = "server"
|
||||||
|
}
|
||||||
|
parser:option "--config"
|
||||||
|
assert.equal(
|
||||||
|
[=[Usage: foo [-q] --from <server> [--config <config>]]=],
|
||||||
|
parser:prepare():get_usage()
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("creates correct usage message for commands", function()
|
||||||
|
local parser = argparse.parser "foo"
|
||||||
|
parser:flag "-q" "--quiet"
|
||||||
|
local run = parser:command "run"
|
||||||
|
run:option "--where"
|
||||||
|
assert.equal(
|
||||||
|
[=[Usage: foo [-q] [<command>] ...]=],
|
||||||
|
parser:prepare():get_usage()
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
|
||||||
|
describe("usage generation can be customized", function()
|
||||||
|
it("uses message provided by user", function()
|
||||||
|
local parser = argparse.parser "foo" {
|
||||||
|
usage = "Usage: obvious"
|
||||||
|
}
|
||||||
|
parser:flag "-q" "--quiet"
|
||||||
|
assert.equal(
|
||||||
|
[=[Usage: obvious]=],
|
||||||
|
parser:prepare():get_usage()
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("uses per-option message provided by user", function()
|
||||||
|
local parser = argparse.parser "foo"
|
||||||
|
parser:flag "-q" "--quiet" {
|
||||||
|
usage = "[-q | --quiet]"
|
||||||
|
}
|
||||||
|
assert.equal(
|
||||||
|
[=[Usage: foo [-q | --quiet]]=],
|
||||||
|
parser:prepare():get_usage()
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
|
||||||
|
it("uses argnames provided by user", function()
|
||||||
|
local parser = argparse.parser "foo"
|
||||||
|
parser:argument "inputs" {
|
||||||
|
args = "1-2",
|
||||||
|
argname = "<input>"
|
||||||
|
}
|
||||||
|
assert.equal(
|
||||||
|
[=[Usage: foo <input> [<input>]]=],
|
||||||
|
parser:prepare():get_usage()
|
||||||
|
)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
@@ -93,6 +93,10 @@ function Argument:get_arg_usage(argname)
|
|||||||
while i <= math.min(self.maxargs, 3) do
|
while i <= math.min(self.maxargs, 3) do
|
||||||
table.insert(buf, "[" .. argname .. "]")
|
table.insert(buf, "[" .. argname .. "]")
|
||||||
i = i+1
|
i = i+1
|
||||||
|
|
||||||
|
if self.maxargs == math.huge then
|
||||||
|
break
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if i < self.maxargs then
|
if i < self.maxargs then
|
||||||
|
Reference in New Issue
Block a user