]> git.lizzy.rs Git - metalua.git/blob - src/tests/run.mlua
Merge remote branch 'origin/master'
[metalua.git] / src / tests / run.mlua
1 -- Run all *.lua and *.mlua files in this directory.
2 -- This makes it easy to run all tests in the directory, 
3
4 -{ extension 'xloop' }
5
6 LS_COMMANDS = { "ls", "dir /b" } 
7 for i, cmd in ipairs(LS_COMMANDS) do
8    local f = io.popen (cmd)
9    ls = f :read '*a'
10    f :close()
11    if ls ~= '' then
12       break
13    elseif i == #LS_COMMANDS then
14       error "Can't figure out how to list files on your OS"
15    end
16 end
17
18 this_script = arg[1]
19
20 local errors = {}
21
22 for filename in ls :gmatch "[^\n]+" if filename ~= this_script and filename :strmatch  "%.m?lua$" do
23    printf ("*** running %s ***", filename)
24    local ret = os.execute ("metalua "..filename)
25    if ret ~= 0 then 
26       errors[#errors + 1] = "Test "..filename.." failed, returned "..ret
27    end
28 end
29
30 if #errors > 0 then
31    print("\n\n================================================================================") 
32    error(
33       "TEST FAILURES DETECTED:\n" ..
34       "-----------------------\n" ..
35       " * " .. table.concat(errors, "\n * ")
36     ) 
37 end