Software /
code /
prosody
Diff
tests/test.lua @ 28:4a238233f278
Adding initial unit testing scripts
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 27 Sep 2008 19:18:05 +0100 |
child | 271:396edd2f9d2e |
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" +