Merge 0.9->0.10 again
[prosody.git] / tests / test.lua
index de1e40fd8bb96166154cf78f16a6ccc08d2dac81..78f2b234e3b3b5d5c6c2c76dfbc0981210ccad2e 100644 (file)
@@ -1,7 +1,7 @@
 -- Prosody IM
 -- Copyright (C) 2008-2010 Matthew Wild
 -- Copyright (C) 2008-2010 Waqas Hussain
--- 
+--
 -- This project is MIT/X11 licensed. Please see the
 -- COPYING file in the source package for more information.
 --
@@ -12,15 +12,15 @@ function run_all_tests()
        package.loaded["net.connlisteners"] = { get = function () return {} end };
        dotest "util.jid"
        dotest "util.multitable"
-       dotest "util.rfc3484"
-       dotest "net.http"
-       dotest "core.modulemanager"
+       dotest "util.rfc6724"
+       dotest "util.http"
        dotest "core.stanza_router"
        dotest "core.s2smanager"
        dotest "core.configmanager"
+       dotest "util.ip"
        dotest "util.stanza"
        dotest "util.sasl.scram"
-       
+
        dosingletest("test_sasl.lua", "latin1toutf8");
        dosingletest("test_utf8.lua", "valid");
 end
@@ -88,12 +88,12 @@ function dosingletest(testname, fname)
                print("WARNING: ", "Failed to initialise tests for "..testname, err);
                return;
        end
-       
+
        if type(tests[fname]) ~= "function" then
                error(testname.." has no test '"..fname.."'", 0);
        end
-       
-       
+
+
        local line_hook, line_info = new_line_coverage_monitor(testname);
        debug.sethook(line_hook, "l")
        local success, ret = pcall(tests[fname]);
@@ -135,17 +135,23 @@ function dotest(unitname)
                print("WARNING: ", "Failed to load module: "..unitname, err);
                return;
        end
-       
+
        local oldmodule, old_M = _fakeG.module, _fakeG._M;
-       _fakeG.module = function () _M = _G end
+       _fakeG.module = function () _M = unit end
        setfenv(chunk, unit);
-       local success, err = pcall(chunk);
+       local success, ret = pcall(chunk);
        _fakeG.module, _fakeG._M = oldmodule, old_M;
        if not success then
                print("WARNING: ", "Failed to initialise module: "..unitname, err);
                return;
        end
-       
+
+       if type(ret) == "table" then
+               for k,v in pairs(ret) do
+                       unit[k] = v;
+               end
+       end
+
        for name, f in pairs(unit) do
                local test = rawget(tests, name);
                if type(f) ~= "function" then
@@ -192,11 +198,11 @@ end
 function new_line_coverage_monitor(file)
        local lines_hit, funcs_hit = {}, {};
        local total_lines, covered_lines = 0, 0;
-       
+
        for line in io.lines(file) do
                total_lines = total_lines + 1;
        end
-       
+
        return function (event, line) -- Line hook
                        if not lines_hit[line] then
                                local info = debug.getinfo(2, "fSL")