diff options
author | V1K1NGbg <victor@ilchev.com> | 2024-08-22 17:48:56 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2024-10-21 13:30:51 -0300 |
commit | 08351f44d22f07f0eaf87fcc5732a32e7e5282df (patch) | |
tree | 68f45a6681e9d34999ab7bb69b05aa68e54911cc /src | |
parent | fdc7493906e7eab77a7d74ffde52a38e0055393e (diff) | |
download | luarocks-08351f44d22f07f0eaf87fcc5732a32e7e5282df.tar.gz luarocks-08351f44d22f07f0eaf87fcc5732a32e7e5282df.tar.bz2 luarocks-08351f44d22f07f0eaf87fcc5732a32e7e5282df.zip |
Teal: convert luarocks.test
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/test.tl | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/src/luarocks/test.tl b/src/luarocks/test.tl index d074b950..d076d264 100644 --- a/src/luarocks/test.tl +++ b/src/luarocks/test.tl | |||
@@ -1,32 +1,44 @@ | |||
1 | 1 | local record test | |
2 | local test = {} | 2 | end |
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 | local type Rockspec = require("luarocks.core.types.rockspec").Rockspec | ||
9 | local type Dependencies = require("luarocks.core.types.rockspec").Dependencies | ||
10 | |||
11 | local type TestRunner = require("luarocks.core.types.testrunner").TestRunner | ||
12 | |||
8 | local test_types = { | 13 | local test_types = { |
9 | "busted", | 14 | "busted", |
10 | "command", | 15 | "command", |
11 | } | 16 | } |
12 | 17 | ||
13 | local test_modules = {} | 18 | local test_modules: {TestRunner} = {} |
19 | local typetomod: {string: TestRunner} = {} | ||
20 | local modtotype: {TestRunner: string} = {} | ||
14 | 21 | ||
15 | for _, test_type in ipairs(test_types) do | 22 | for _, test_type in ipairs(test_types) do |
16 | local mod = require("luarocks.test." .. test_type) | 23 | local mod: TestRunner |
24 | if test_type == "command" then | ||
25 | mod = require("luarocks.test.command") | ||
26 | elseif test_type == "busted" then | ||
27 | mod = require("luarocks.test.busted") | ||
28 | end | ||
17 | table.insert(test_modules, mod) | 29 | table.insert(test_modules, mod) |
18 | test_modules[test_type] = mod | 30 | typetomod[test_type] = mod |
19 | test_modules[mod] = test_type | 31 | modtotype[mod] = test_type |
20 | end | 32 | end |
21 | 33 | ||
22 | local function get_test_type(rockspec) | 34 | local function get_test_type(rockspec: Rockspec): string, string |
23 | if rockspec.test and rockspec.test.type then | 35 | if rockspec.test and rockspec.test.type then |
24 | return rockspec.test.type | 36 | return rockspec.test.type |
25 | end | 37 | end |
26 | 38 | ||
27 | for _, test_module in ipairs(test_modules) do | 39 | for _, test_module in ipairs(test_modules) do |
28 | if test_module.detect_type() then | 40 | if test_module.detect_type() then |
29 | return test_modules[test_module] | 41 | return modtotype[test_module] |
30 | end | 42 | end |
31 | end | 43 | end |
32 | 44 | ||
@@ -34,27 +46,25 @@ local function get_test_type(rockspec) | |||
34 | end | 46 | end |
35 | 47 | ||
36 | -- Run test suite as configured in rockspec in the current directory. | 48 | -- Run test suite as configured in rockspec in the current directory. |
37 | function test.run_test_suite(rockspec_arg, test_type, args, prepare) | 49 | function test.run_test_suite(rockspec_arg: string | Rockspec, test_type: string, args: {string}, prepare: boolean): boolean, string, string |
38 | local rockspec | 50 | local rockspec: Rockspec |
39 | if type(rockspec_arg) == "string" then | 51 | if rockspec_arg is string then |
40 | local err, errcode | 52 | local err, errcode: string, string |
41 | rockspec, err, errcode = fetch.load_rockspec(rockspec_arg) | 53 | rockspec, err, errcode = fetch.load_rockspec(rockspec_arg) |
42 | if err then | 54 | if err then |
43 | return nil, err, errcode | 55 | return nil, err, errcode |
44 | end | 56 | end |
45 | else | 57 | else |
46 | assert(type(rockspec_arg) == "table") | ||
47 | rockspec = rockspec_arg | 58 | rockspec = rockspec_arg |
48 | end | 59 | end |
49 | 60 | ||
50 | if not test_type then | 61 | if not test_type then |
51 | local err | 62 | local err: string |
52 | test_type, err = get_test_type(rockspec, test_type) | 63 | test_type, err = get_test_type(rockspec) |
53 | if not test_type then | 64 | if not test_type then |
54 | return nil, err | 65 | return nil, err |
55 | end | 66 | end |
56 | end | 67 | end |
57 | assert(test_type) | ||
58 | 68 | ||
59 | local all_deps = { | 69 | local all_deps = { |
60 | "dependencies", | 70 | "dependencies", |
@@ -62,29 +72,28 @@ function test.run_test_suite(rockspec_arg, test_type, args, prepare) | |||
62 | "test_dependencies", | 72 | "test_dependencies", |
63 | } | 73 | } |
64 | for _, dep_kind in ipairs(all_deps) do | 74 | for _, dep_kind in ipairs(all_deps) do |
65 | if rockspec[dep_kind] and next(rockspec[dep_kind]) then | 75 | if (rockspec as {string: Dependencies})[dep_kind] and next((rockspec as {string: Dependencies})[dep_kind]) ~= nil then |
66 | local ok, err, errcode = deps.fulfill_dependencies(rockspec, dep_kind, "all") | 76 | local _, err, errcode = deps.fulfill_dependencies(rockspec, dep_kind, "all") |
67 | if err then | 77 | if err then |
68 | return nil, err, errcode | 78 | return nil, err, errcode |
69 | end | 79 | end |
70 | end | 80 | end |
71 | end | 81 | end |
72 | 82 | ||
73 | local mod_name = "luarocks.test." .. test_type | 83 | local pok, test_mod = pcall(require, "luarocks.test."..test_type) as (boolean, TestRunner) |
74 | local pok, test_mod = pcall(require, mod_name) | ||
75 | if not pok then | 84 | if not pok then |
76 | return nil, "failed loading test execution module " .. mod_name | 85 | return nil, "failed loading test execution module luarocks.test."..test_type |
77 | end | 86 | end |
78 | 87 | ||
79 | if prepare then | 88 | if prepare then |
80 | if test_type == "busted" then | 89 | if test_type == "busted" then |
81 | return test_mod.run_tests(rockspec_arg, {"--version"}) | 90 | return test_mod.run_tests(rockspec.test, {"--version"}) |
82 | else | 91 | else |
83 | return true | 92 | return true |
84 | end | 93 | end |
85 | else | 94 | else |
86 | local flags = rockspec.test and rockspec.test.flags | 95 | local flags = rockspec.test and rockspec.test.flags |
87 | if type(flags) == "table" then | 96 | if flags is {string} then |
88 | util.variable_substitutions(flags, rockspec.variables) | 97 | util.variable_substitutions(flags, rockspec.variables) |
89 | 98 | ||
90 | -- insert any flags given in test.flags at the front of args | 99 | -- insert any flags given in test.flags at the front of args |