-- 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. -- local config = require "core.configmanager"; local helpers = require "util.helpers"; local set = require "util.set"; function load_modules_for_host(load_modules_for_host, mm) local test_num = 0; local function test_load(global_modules_enabled, global_modules_disabled, host_modules_enabled, host_modules_disabled, expected_modules) test_num = test_num + 1; -- Prepare hosts = { ["example.com"] = {} }; config.set("*", "core", "modules_enabled", global_modules_enabled); config.set("*", "core", "modules_disabled", global_modules_disabled); config.set("example.com", "core", "modules_enabled", host_modules_enabled); config.set("example.com", "core", "modules_disabled", host_modules_disabled); expected_modules = set.new(expected_modules); expected_modules:add_list(helpers.get_upvalue(load_modules_for_host, "autoload_modules")); local loaded_modules = set.new(); function mm.load(host, module) assert_equal(host, "example.com", test_num..": Host isn't example.com but "..tostring(host)); assert_equal(expected_modules:contains(module), true, test_num..": Loading unexpected module '"..tostring(module).."'"); loaded_modules:add(module); end load_modules_for_host("example.com"); assert_equal((expected_modules - loaded_modules):empty(), true, test_num..": Not all modules loaded: "..tostring(expected_modules - loaded_modules)); end test_load({ "one", "two", "three" }, nil, nil, nil, { "one", "two", "three" }); test_load({ "one", "two", "three" }, {}, nil, nil, { "one", "two", "three" }); test_load({ "one", "two", "three" }, { "two" }, nil, nil, { "one", "three" }); test_load({ "one", "two", "three" }, { "three" }, nil, nil, { "one", "two" }); test_load({ "one", "two", "three" }, nil, nil, { "three" }, { "one", "two" }); test_load({ "one", "two", "three" }, nil, { "three" }, { "three" }, { "one", "two", "three" }); test_load({ "one", "two" }, nil, { "three" }, nil, { "one", "two", "three" }); test_load({ "one", "two", "three" }, nil, { "three" }, nil, { "one", "two", "three" }); test_load({ "one", "two", "three" }, { "three" }, { "three" }, nil, { "one", "two", "three" }); test_load({ "one", "two" }, { "three" }, { "three" }, nil, { "one", "two", "three" }); end