more command tests, added require_command

This commit is contained in:
mpeterv
2014-01-19 15:27:25 +04:00
parent e81aab8a5b
commit bba513802b
2 changed files with 55 additions and 1 deletions

View File

@@ -10,4 +10,53 @@ describe("tests related to commands", function()
local args = parser:parse{"temp.txt", "remove"}
assert.same({file = "temp.txt", remove = true}, args)
end)
it("switches context properly", function()
local parser = argparse.parser "name"
local install = parser:command "install"
install:flag "-q" "--quiet"
local args = parser:parse{"install", "-q"}
assert.same({install = true, quiet = true}, args)
assert.has_error(function() parser:parse{"-q", "install"} end, "unknown option -q")
end)
it("allows to continue passing old options", function()
local parser = argparse.parser "name"
parser:flag "-v" "--verbose" {
count = "*"
}
parser:command "install"
local args = parser:parse{"-vv", "install", "--verbose"}
assert.same({install = true, verbose = 3}, args)
end)
it("handles nested commands", function()
local parser = argparse.parser "name"
local foo = parser:command "foo"
local bar = foo:command "bar"
local baz = foo:command "baz"
local args = parser:parse{"foo", "bar"}
assert.same({foo = true, bar = true}, args)
end)
it("handles no commands depending on parser.require_command", function()
local parser = argparse.parser "name"
parser:command "install"
local args = parser:parse{}
assert.same({}, args)
parser.require_command = true
assert.has_error(function() parser:parse{} end, "command is required")
end)
it("Detects wrong commands", function()
local parser = argparse.parser "name"
local install = parser:command "install"
assert.has_error(function() parser:parse{"isntall"} end, "unknown command isntall")
end)
end)