Files
argparse/spec/tip_spec.lua
2015-03-13 15:12:06 +03:00

97 lines
3.1 KiB
Lua

local Parser = require "argparse"
getmetatable(Parser()).error = function(_, msg) error(msg) end
describe("tests related to tips", function()
describe("provides tips when data is too long", function()
it("for options", function()
local parser = Parser()
parser:option "-q" "--quiet"
assert.has_error(function() parser:parse{"--quiett=true"} end,
"unknown option '--quiett'\nDid you mean '--quiet'?")
end)
it("for commands", function()
local parser = Parser "name"
parser:command "install"
assert.has_error(function() parser:parse{"installq"} end,
"unknown command 'installq'\nDid you mean 'install'?")
end)
end)
describe("provides tips when data is too short", function()
it("for options", function()
local parser = Parser()
parser:option "-q" "--quiet"
assert.has_error(function() parser:parse{"--quet=true"} end,
"unknown option '--quet'\nDid you mean '--quiet'?")
end)
it("for commands", function()
local parser = Parser "name"
parser:command "install"
assert.has_error(function() parser:parse{"nstall"} end,
"unknown command 'nstall'\nDid you mean 'install'?")
end)
end)
describe("provides tips on substitution", function()
it("for options", function()
local parser = Parser()
parser:option "-q" "--quiet"
assert.has_error(function() parser:parse{"--qriet=true"} end,
"unknown option '--qriet'\nDid you mean '--quiet'?")
end)
it("for commands", function()
local parser = Parser "name"
parser:command "install"
assert.has_error(function() parser:parse{"inntall"} end,
"unknown command 'inntall'\nDid you mean 'install'?")
end)
end)
describe("provides tips on transpositions", function()
it("for options", function()
local parser = Parser()
parser:option "-q" "--quiet"
assert.has_error(function() parser:parse{"--queit=true"} end,
"unknown option '--queit'\nDid you mean '--quiet'?")
end)
it("for commands", function()
local parser = Parser "name"
parser:command "install"
assert.has_error(function() parser:parse{"isntall"} end,
"unknown command 'isntall'\nDid you mean 'install'?")
end)
end)
describe("provides multiple tips", function()
it("for options", function()
local parser = Parser()
parser:option "-q" "--quiet"
parser:option "--quick"
assert.has_error(function() parser:parse{"--quiec=true"} end,
"unknown option '--quiec'\nDid you mean one of these: '--quick' '--quiet'?")
end)
it("for commands", function()
local parser = Parser "name"
parser:command "install"
parser:command "instant"
assert.has_error(function() parser:parse{"instanl"} end,
"unknown command 'instanl'\nDid you mean one of these: 'install' 'instant'?")
end)
end)
end)