diff options
author | chai <chaifix@163.com> | 2021-10-30 11:32:16 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-30 11:32:16 +0800 |
commit | 42ec7286b2d36a9ba22925f816a17cb1cc2aa5ce (patch) | |
tree | 24bc7009457a8d7500f264e89946dc20d069294f /Data/Libraries/Penlight/run.lua | |
parent | 164885fd98d48703bd771f802d79557b7db97431 (diff) |
+ Penlight
Diffstat (limited to 'Data/Libraries/Penlight/run.lua')
-rw-r--r-- | Data/Libraries/Penlight/run.lua | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Data/Libraries/Penlight/run.lua b/Data/Libraries/Penlight/run.lua new file mode 100644 index 0000000..3d637e7 --- /dev/null +++ b/Data/Libraries/Penlight/run.lua @@ -0,0 +1,66 @@ +-- Running tests and/or examples. +local lfs = require "lfs" + +local directories = {} +local luacov = false + +for _, argument in ipairs(arg) do + if argument == "--help" then + print("Usage: lua run.lua [--luacov] [<dir>]...") + os.exit(0) + elseif argument == "--luacov" then + luacov = true + else + table.insert(directories, argument) + end +end + +if #directories == 0 then + directories = {"tests", "examples"} +end + +local lua = "lua" +local i = -1 +while arg[i] do + lua = arg[i] + i = i - 1 +end + +if luacov then + lua = lua .. " -lluacov" +end + +local dir_sep = package.config:sub(1, 1) +local quote = dir_sep == "/" and "'" or '"' +local pl_src = "lua/?.lua;lua/?/init.lua" +lua = lua .. " -e " .. quote .. "package.path=[[" .. pl_src .. ";]]..package.path" .. quote + +local function run_directory(dir) + local files = {} + for path in lfs.dir(dir) do + local full_path = dir .. dir_sep .. path + if path:find("%.lua$") and lfs.attributes(full_path, "mode") == "file" then + table.insert(files, full_path) + end + end + table.sort(files) + + for _, file in ipairs(files) do + local cmd = lua .. " " .. file + print("Running " .. file) + local code1, _, code2 = os.execute(cmd) + local code = type(code1) == "number" and code1 or code2 + + if code ~= 0 then + print(("Running %s failed with code %d"):format(file, code)) + os.exit(1) + end + end +end + +for _, dir in ipairs(directories) do + print("Running files in " .. dir) + run_directory(dir) +end + +print("Run completed successfully") |