diff options
| author | V1K1NGbg <victor@ilchev.com> | 2024-08-13 19:53:11 +0300 |
|---|---|---|
| committer | V1K1NGbg <victor@ilchev.com> | 2024-08-13 19:53:11 +0300 |
| commit | 9d4bebd145cbdf3185ed68ba1eb4140303eb093f (patch) | |
| tree | 400a2298ccd99cd30e6afaaf342c123d50a7849f /src | |
| parent | 6bafc07e7f6e93ef9d1bcaa73d8f16d17b114e1b (diff) | |
| download | luarocks-9d4bebd145cbdf3185ed68ba1eb4140303eb093f.tar.gz luarocks-9d4bebd145cbdf3185ed68ba1eb4140303eb093f.tar.bz2 luarocks-9d4bebd145cbdf3185ed68ba1eb4140303eb093f.zip | |
test
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/test-original.lua (renamed from src/luarocks/test-incomplete.lua) | 57 | ||||
| -rw-r--r-- | src/luarocks/test.lua | 52 | ||||
| -rw-r--r-- | src/luarocks/test.tl | 17 |
3 files changed, 58 insertions, 68 deletions
diff --git a/src/luarocks/test-incomplete.lua b/src/luarocks/test-original.lua index 762b98b5..d074b950 100644 --- a/src/luarocks/test-incomplete.lua +++ b/src/luarocks/test-original.lua | |||
| @@ -1,24 +1,10 @@ | |||
| 1 | local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local assert = _tl_compat and _tl_compat.assert or assert; local ipairs = _tl_compat and _tl_compat.ipairs or ipairs; local pcall = _tl_compat and _tl_compat.pcall or pcall; local table = _tl_compat and _tl_compat.table or table; local test = {TestModules = {}, } | ||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | 1 | ||
| 2 | local test = {} | ||
| 8 | 3 | ||
| 9 | local fetch = require("luarocks.fetch") | 4 | local fetch = require("luarocks.fetch") |
| 10 | local deps = require("luarocks.deps") | 5 | local deps = require("luarocks.deps") |
| 11 | local util = require("luarocks.util") | 6 | local util = require("luarocks.util") |
| 12 | 7 | ||
| 13 | |||
| 14 | |||
| 15 | |||
| 16 | |||
| 17 | |||
| 18 | |||
| 19 | |||
| 20 | |||
| 21 | |||
| 22 | local test_types = { | 8 | local test_types = { |
| 23 | "busted", | 9 | "busted", |
| 24 | "command", | 10 | "command", |
| @@ -27,15 +13,10 @@ local test_types = { | |||
| 27 | local test_modules = {} | 13 | local test_modules = {} |
| 28 | 14 | ||
| 29 | for _, test_type in ipairs(test_types) do | 15 | for _, test_type in ipairs(test_types) do |
| 30 | local mod | 16 | local mod = require("luarocks.test." .. test_type) |
| 31 | if test_type == "command" then | ||
| 32 | mod = require("luarocks.test.command") | ||
| 33 | elseif test_type == "busted" then | ||
| 34 | mod = require("luarocks.test.busted") | ||
| 35 | end | ||
| 36 | table.insert(test_modules, mod) | 17 | table.insert(test_modules, mod) |
| 37 | test_modules.typetomod[test_type] = mod | 18 | test_modules[test_type] = mod |
| 38 | test_modules.modtotype[mod] = test_type | 19 | test_modules[mod] = test_type |
| 39 | end | 20 | end |
| 40 | 21 | ||
| 41 | local function get_test_type(rockspec) | 22 | local function get_test_type(rockspec) |
| @@ -45,14 +26,14 @@ local function get_test_type(rockspec) | |||
| 45 | 26 | ||
| 46 | for _, test_module in ipairs(test_modules) do | 27 | for _, test_module in ipairs(test_modules) do |
| 47 | if test_module.detect_type() then | 28 | if test_module.detect_type() then |
| 48 | return test_modules.modtotype[test_module] | 29 | return test_modules[test_module] |
| 49 | end | 30 | end |
| 50 | end | 31 | end |
| 51 | 32 | ||
| 52 | return nil, "could not detect test type -- no test suite for " .. rockspec.package .. "?" | 33 | return nil, "could not detect test type -- no test suite for " .. rockspec.package .. "?" |
| 53 | end | 34 | end |
| 54 | 35 | ||
| 55 | 36 | -- Run test suite as configured in rockspec in the current directory. | |
| 56 | function test.run_test_suite(rockspec_arg, test_type, args, prepare) | 37 | function test.run_test_suite(rockspec_arg, test_type, args, prepare) |
| 57 | local rockspec | 38 | local rockspec |
| 58 | if type(rockspec_arg) == "string" then | 39 | if type(rockspec_arg) == "string" then |
| @@ -62,12 +43,13 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
| 62 | return nil, err, errcode | 43 | return nil, err, errcode |
| 63 | end | 44 | end |
| 64 | else | 45 | else |
| 46 | assert(type(rockspec_arg) == "table") | ||
| 65 | rockspec = rockspec_arg | 47 | rockspec = rockspec_arg |
| 66 | end | 48 | end |
| 67 | 49 | ||
| 68 | if not test_type then | 50 | if not test_type then |
| 69 | local err | 51 | local err |
| 70 | test_type, err = get_test_type(rockspec) | 52 | test_type, err = get_test_type(rockspec, test_type) |
| 71 | if not test_type then | 53 | if not test_type then |
| 72 | return nil, err | 54 | return nil, err |
| 73 | end | 55 | end |
| @@ -80,30 +62,23 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
| 80 | "test_dependencies", | 62 | "test_dependencies", |
| 81 | } | 63 | } |
| 82 | for _, dep_kind in ipairs(all_deps) do | 64 | for _, dep_kind in ipairs(all_deps) do |
| 83 | if (rockspec)[dep_kind] and next((rockspec)[dep_kind]) ~= nil then | 65 | if rockspec[dep_kind] and next(rockspec[dep_kind]) then |
| 84 | local _, err, errcode = deps.fulfill_dependencies(rockspec, dep_kind, "all") | 66 | local ok, err, errcode = deps.fulfill_dependencies(rockspec, dep_kind, "all") |
| 85 | if err then | 67 | if err then |
| 86 | return nil, err, errcode | 68 | return nil, err, errcode |
| 87 | end | 69 | end |
| 88 | end | 70 | end |
| 89 | end | 71 | end |
| 90 | 72 | ||
| 91 | local pok, test_mod | 73 | local mod_name = "luarocks.test." .. test_type |
| 92 | if test_type == "command" then | 74 | local pok, test_mod = pcall(require, mod_name) |
| 93 | pok, test_mod = pcall(require, "luarocks.test.command") | 75 | if not pok then |
| 94 | if not pok then | 76 | return nil, "failed loading test execution module " .. mod_name |
| 95 | return nil, "failed loading test execution module luarocks.test.command" | ||
| 96 | end | ||
| 97 | elseif test_type == "busted" then | ||
| 98 | pok, test_mod = pcall(require, "luarocks.test.busted") | ||
| 99 | if not pok then | ||
| 100 | return nil, "failed loading test execution module luarocks.test.busted" | ||
| 101 | end | ||
| 102 | end | 77 | end |
| 103 | 78 | ||
| 104 | if prepare then | 79 | if prepare then |
| 105 | if test_type == "busted" then | 80 | if test_type == "busted" then |
| 106 | return test_mod.run_tests(rockspec.test, { "--version" }) | 81 | return test_mod.run_tests(rockspec_arg, {"--version"}) |
| 107 | else | 82 | else |
| 108 | return true | 83 | return true |
| 109 | end | 84 | end |
| @@ -112,7 +87,7 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
| 112 | if type(flags) == "table" then | 87 | if type(flags) == "table" then |
| 113 | util.variable_substitutions(flags, rockspec.variables) | 88 | util.variable_substitutions(flags, rockspec.variables) |
| 114 | 89 | ||
| 115 | 90 | -- insert any flags given in test.flags at the front of args | |
| 116 | for i = 1, #flags do | 91 | for i = 1, #flags do |
| 117 | table.insert(args, i, flags[i]) | 92 | table.insert(args, i, flags[i]) |
| 118 | end | 93 | end |
diff --git a/src/luarocks/test.lua b/src/luarocks/test.lua index d074b950..7be3d520 100644 --- a/src/luarocks/test.lua +++ b/src/luarocks/test.lua | |||
| @@ -1,22 +1,36 @@ | |||
| 1 | local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local assert = _tl_compat and _tl_compat.assert or assert; local ipairs = _tl_compat and _tl_compat.ipairs or ipairs; local pcall = _tl_compat and _tl_compat.pcall or pcall; local table = _tl_compat and _tl_compat.table or table; local test = {} | ||
| 1 | 2 | ||
| 2 | local test = {} | ||
| 3 | 3 | ||
| 4 | local fetch = require("luarocks.fetch") | 4 | local fetch = require("luarocks.fetch") |
| 5 | local deps = require("luarocks.deps") | 5 | local deps = require("luarocks.deps") |
| 6 | local util = require("luarocks.util") | 6 | local util = require("luarocks.util") |
| 7 | 7 | ||
| 8 | |||
| 9 | |||
| 10 | |||
| 11 | |||
| 12 | |||
| 13 | |||
| 14 | |||
| 8 | local test_types = { | 15 | local test_types = { |
| 9 | "busted", | 16 | "busted", |
| 10 | "command", | 17 | "command", |
| 11 | } | 18 | } |
| 12 | 19 | ||
| 13 | local test_modules = {} | 20 | local test_modules = {} |
| 21 | local typetomod = {} | ||
| 22 | local modtotype = {} | ||
| 14 | 23 | ||
| 15 | for _, test_type in ipairs(test_types) do | 24 | for _, test_type in ipairs(test_types) do |
| 16 | local mod = require("luarocks.test." .. test_type) | 25 | local mod |
| 26 | if test_type == "command" then | ||
| 27 | mod = require("luarocks.test.command") | ||
| 28 | elseif test_type == "busted" then | ||
| 29 | mod = require("luarocks.test.busted") | ||
| 30 | end | ||
| 17 | table.insert(test_modules, mod) | 31 | table.insert(test_modules, mod) |
| 18 | test_modules[test_type] = mod | 32 | typetomod[test_type] = mod |
| 19 | test_modules[mod] = test_type | 33 | modtotype[mod] = test_type |
| 20 | end | 34 | end |
| 21 | 35 | ||
| 22 | local function get_test_type(rockspec) | 36 | local function get_test_type(rockspec) |
| @@ -26,14 +40,14 @@ local function get_test_type(rockspec) | |||
| 26 | 40 | ||
| 27 | for _, test_module in ipairs(test_modules) do | 41 | for _, test_module in ipairs(test_modules) do |
| 28 | if test_module.detect_type() then | 42 | if test_module.detect_type() then |
| 29 | return test_modules[test_module] | 43 | return modtotype[test_module] |
| 30 | end | 44 | end |
| 31 | end | 45 | end |
| 32 | 46 | ||
| 33 | return nil, "could not detect test type -- no test suite for " .. rockspec.package .. "?" | 47 | return nil, "could not detect test type -- no test suite for " .. rockspec.package .. "?" |
| 34 | end | 48 | end |
| 35 | 49 | ||
| 36 | -- Run test suite as configured in rockspec in the current directory. | 50 | |
| 37 | function test.run_test_suite(rockspec_arg, test_type, args, prepare) | 51 | function test.run_test_suite(rockspec_arg, test_type, args, prepare) |
| 38 | local rockspec | 52 | local rockspec |
| 39 | if type(rockspec_arg) == "string" then | 53 | if type(rockspec_arg) == "string" then |
| @@ -43,13 +57,12 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
| 43 | return nil, err, errcode | 57 | return nil, err, errcode |
| 44 | end | 58 | end |
| 45 | else | 59 | else |
| 46 | assert(type(rockspec_arg) == "table") | ||
| 47 | rockspec = rockspec_arg | 60 | rockspec = rockspec_arg |
| 48 | end | 61 | end |
| 49 | 62 | ||
| 50 | if not test_type then | 63 | if not test_type then |
| 51 | local err | 64 | local err |
| 52 | test_type, err = get_test_type(rockspec, test_type) | 65 | test_type, err = get_test_type(rockspec) |
| 53 | if not test_type then | 66 | if not test_type then |
| 54 | return nil, err | 67 | return nil, err |
| 55 | end | 68 | end |
| @@ -62,23 +75,30 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
| 62 | "test_dependencies", | 75 | "test_dependencies", |
| 63 | } | 76 | } |
| 64 | for _, dep_kind in ipairs(all_deps) do | 77 | for _, dep_kind in ipairs(all_deps) do |
| 65 | if rockspec[dep_kind] and next(rockspec[dep_kind]) then | 78 | if (rockspec)[dep_kind] and next((rockspec)[dep_kind]) ~= nil then |
| 66 | local ok, err, errcode = deps.fulfill_dependencies(rockspec, dep_kind, "all") | 79 | local _, err, errcode = deps.fulfill_dependencies(rockspec, dep_kind, "all") |
| 67 | if err then | 80 | if err then |
| 68 | return nil, err, errcode | 81 | return nil, err, errcode |
| 69 | end | 82 | end |
| 70 | end | 83 | end |
| 71 | end | 84 | end |
| 72 | 85 | ||
| 73 | local mod_name = "luarocks.test." .. test_type | 86 | local pok, test_mod |
| 74 | local pok, test_mod = pcall(require, mod_name) | 87 | if test_type == "command" then |
| 75 | if not pok then | 88 | pok, test_mod = pcall(require, "luarocks.test.command") |
| 76 | return nil, "failed loading test execution module " .. mod_name | 89 | if not pok then |
| 90 | return nil, "failed loading test execution module luarocks.test.command" | ||
| 91 | end | ||
| 92 | elseif test_type == "busted" then | ||
| 93 | pok, test_mod = pcall(require, "luarocks.test.busted") | ||
| 94 | if not pok then | ||
| 95 | return nil, "failed loading test execution module luarocks.test.busted" | ||
| 96 | end | ||
| 77 | end | 97 | end |
| 78 | 98 | ||
| 79 | if prepare then | 99 | if prepare then |
| 80 | if test_type == "busted" then | 100 | if test_type == "busted" then |
| 81 | return test_mod.run_tests(rockspec_arg, {"--version"}) | 101 | return test_mod.run_tests(rockspec.test, { "--version" }) |
| 82 | else | 102 | else |
| 83 | return true | 103 | return true |
| 84 | end | 104 | end |
| @@ -87,7 +107,7 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
| 87 | if type(flags) == "table" then | 107 | if type(flags) == "table" then |
| 88 | util.variable_substitutions(flags, rockspec.variables) | 108 | util.variable_substitutions(flags, rockspec.variables) |
| 89 | 109 | ||
| 90 | -- insert any flags given in test.flags at the front of args | 110 | |
| 91 | for i = 1, #flags do | 111 | for i = 1, #flags do |
| 92 | table.insert(args, i, flags[i]) | 112 | table.insert(args, i, flags[i]) |
| 93 | end | 113 | end |
diff --git a/src/luarocks/test.tl b/src/luarocks/test.tl index 86d572d8..3345a7eb 100644 --- a/src/luarocks/test.tl +++ b/src/luarocks/test.tl | |||
| @@ -1,9 +1,4 @@ | |||
| 1 | local record test | 1 | local record test |
| 2 | record TestModules | ||
| 3 | {TestRunner} | ||
| 4 | typetomod: {string: TestRunner} | ||
| 5 | modtotype: {TestRunner: string} | ||
| 6 | end | ||
| 7 | end | 2 | end |
| 8 | 3 | ||
| 9 | local fetch = require("luarocks.fetch") | 4 | local fetch = require("luarocks.fetch") |
| @@ -17,14 +12,14 @@ local type Dependencies = r.Dependencies | |||
| 17 | local type t = require("luarocks.core.types.testrunner") | 12 | local type t = require("luarocks.core.types.testrunner") |
| 18 | local type TestRunner = t.TestRunner | 13 | local type TestRunner = t.TestRunner |
| 19 | 14 | ||
| 20 | local type TestModules = test.TestModules | ||
| 21 | |||
| 22 | local test_types = { | 15 | local test_types = { |
| 23 | "busted", | 16 | "busted", |
| 24 | "command", | 17 | "command", |
| 25 | } | 18 | } |
| 26 | 19 | ||
| 27 | local test_modules: TestModules = {} | 20 | local test_modules: {TestRunner} = {} |
| 21 | local typetomod: {string: TestRunner} = {} | ||
| 22 | local modtotype: {TestRunner: string} = {} | ||
| 28 | 23 | ||
| 29 | for _, test_type in ipairs(test_types) do | 24 | for _, test_type in ipairs(test_types) do |
| 30 | local mod: TestRunner | 25 | local mod: TestRunner |
| @@ -34,8 +29,8 @@ for _, test_type in ipairs(test_types) do | |||
| 34 | mod = require("luarocks.test.busted") | 29 | mod = require("luarocks.test.busted") |
| 35 | end | 30 | end |
| 36 | table.insert(test_modules, mod) | 31 | table.insert(test_modules, mod) |
| 37 | test_modules.typetomod[test_type] = mod | 32 | typetomod[test_type] = mod |
| 38 | test_modules.modtotype[mod] = test_type | 33 | modtotype[mod] = test_type |
| 39 | end | 34 | end |
| 40 | 35 | ||
| 41 | local function get_test_type(rockspec: Rockspec): string, string | 36 | local function get_test_type(rockspec: Rockspec): string, string |
| @@ -45,7 +40,7 @@ local function get_test_type(rockspec: Rockspec): string, string | |||
| 45 | 40 | ||
| 46 | for _, test_module in ipairs(test_modules) do | 41 | for _, test_module in ipairs(test_modules) do |
| 47 | if test_module.detect_type() then | 42 | if test_module.detect_type() then |
| 48 | return test_modules.modtotype[test_module] | 43 | return modtotype[test_module] |
| 49 | end | 44 | end |
| 50 | end | 45 | end |
| 51 | 46 | ||
