Software /
code /
prosody
Changeset
28:4a238233f278
Adding initial unit testing scripts
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 27 Sep 2008 19:18:05 +0100 |
parents | 27:859b316e2fb0 |
children | 29:b847875801e5 |
files | tests/test.lua tests/test_util_jid.lua |
diffstat | 2 files changed, 77 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test.lua Sat Sep 27 19:18:05 2008 +0100 @@ -0,0 +1,64 @@ + +local verbosity = tonumber(arg[1]) or 2; + +function assert_equal(a, b) + if not (a == b) then + error(getfenv(2).__unit.."assert_equal failed: "..tostring(a).." ~= "..tostring(b), 2); + elseif verbosity >= 4 then + print("assert_equal succeeded: "..tostring(a).." == "..tostring(b)); + end +end + +function dotest(unitname) + local tests = setmetatable({}, { __index = _G }); + tests.__unit = unitname; + local chunk, err = loadfile("test_"..unitname:gsub("%.", "_")..".lua"); + if not chunk then + print("WARNING: ", "Failed to load tests for "..unitname, err); + return; + end + + setfenv(chunk, tests); + local success, err = pcall(chunk); + if not success then + print("WARNING: ", "Failed to initialise tests for "..unitname, err); + return; + end + + local unit = setmetatable({}, { __index = setmetatable({ module = function () end }, { __index = _G }) }); + + local chunk, err = loadfile("../"..unitname:gsub("%.", "/")..".lua"); + if not chunk then + print("WARNING: ", "Failed to load module: "..unitname, err); + return; + end + + setfenv(chunk, unit); + local success, err = pcall(chunk); + if not success then + print("WARNING: ", "Failed to initialise module: "..unitname, err); + return; + end + + for name, f in pairs(unit) do + if type(f) ~= "function" then + if verbosity >= 3 then + print("INFO: ", "Skipping "..unitname.."."..name.." because it is not a function"); + end + elseif type(tests[name]) ~= "function" then + if verbosity >= 1 then + print("WARNING: ", unitname.."."..name.." has no test!"); + end + else + local success, ret = pcall(tests[name], f, unit); + if not success then + print("TEST FAILED: ", unitname, name, ret); + elseif verbosity >= 2 then + print("TEST SUCCEEDED: ", unitname, name); + end + end + end +end + +dotest "util.jid" +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_util_jid.lua Sat Sep 27 19:18:05 2008 +0100 @@ -0,0 +1,13 @@ + +function split(split) + function test(jid, node, server, resource) + local rnode, rserver, rresource = split(jid); + assert_equal(node, rnode, "split("..jid..") failed"); + assert_equal(server, rserver, "split("..jid..") failed"); + assert_equal(resource, rresource, "split("..jid..") failed"); + end + test("node@server", "node", "server", nil ); + test("node@server/resource", "node", "server", "resource" ); + test("server", nil, "server", nil ); + test("server/resource", nil, "server", "resource" ); +end