summaryrefslogtreecommitdiff
path: root/src/luarocks/test/command.lua
diff options
context:
space:
mode:
authorMike Vink <mike@pionative.com>2025-02-03 21:29:42 +0100
committerMike Vink <mike@pionative.com>2025-02-03 21:29:42 +0100
commit5155816b7b925dec5d5feb1568b1d7ceb00938b9 (patch)
treedeca28ea15e79f6f804c3d90d2ba757881638af5 /src/luarocks/test/command.lua
fetch tarballHEADmaster
Diffstat (limited to 'src/luarocks/test/command.lua')
-rw-r--r--src/luarocks/test/command.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/luarocks/test/command.lua b/src/luarocks/test/command.lua
new file mode 100644
index 0000000..bed6744
--- /dev/null
+++ b/src/luarocks/test/command.lua
@@ -0,0 +1,52 @@
+
+local command = {}
+
+local fs = require("luarocks.fs")
+local cfg = require("luarocks.core.cfg")
+
+local unpack = table.unpack or unpack
+
+function command.detect_type()
+ if fs.exists("test.lua") then
+ return true
+ end
+ return false
+end
+
+function command.run_tests(test, args)
+ if not test then
+ test = {
+ script = "test.lua"
+ }
+ end
+
+ if not test.script and not test.command then
+ test.script = "test.lua"
+ end
+
+ local ok
+
+ if test.script then
+ if type(test.script) ~= "string" then
+ return nil, "Malformed rockspec: 'script' expects a string"
+ end
+ if not fs.exists(test.script) then
+ return nil, "Test script " .. test.script .. " does not exist"
+ end
+ local lua = fs.Q(cfg.variables["LUA"]) -- get lua interpreter configured
+ ok = fs.execute(lua, test.script, unpack(args))
+ elseif test.command then
+ if type(test.command) ~= "string" then
+ return nil, "Malformed rockspec: 'command' expects a string"
+ end
+ ok = fs.execute(test.command, unpack(args))
+ end
+
+ if ok then
+ return true
+ else
+ return nil, "tests failed with non-zero exit code"
+ end
+end
+
+return command