# HG changeset patch # User Matthew Wild # Date 1536570162 -3600 # Node ID cd58c64c67c009feeb676d0381ca1dae709533b8 # Parent 65791ba388b9da2e13d6faf235636d0db860306b scansion: Add support for passing multiple scripts on the command-line diff -r 65791ba388b9 -r cd58c64c67c0 main.lua --- a/main.lua Mon Sep 10 10:01:19 2018 +0100 +++ b/main.lua Mon Sep 10 10:02:42 2018 +0100 @@ -82,16 +82,11 @@ end end assert(#arg > 0, "No test script provided"); - assert(#arg < 2, "Too many parameters"); - if not test_metadata["Name"] then - test_metadata["Name"] = arg[1]; - end end -function read_script() - io.input(arg[1]); +function read_script(script_name) + io.input(script_name); return io.read("*a"); - end function parse_script(data) @@ -131,11 +126,11 @@ return verse; end -function main(log_data) +function main(log_data, script_name) local ok, err = true; - local script = initialize_script(parse_script(read_script())); + local script = initialize_script(parse_script(read_script(script_name))); log_data("script", { title = script.title, summary = script.summary, tags = script.tags }); @@ -231,21 +226,33 @@ end end -log_data("start", { metadata = test_metadata }); -local ok, result, err = pcall(main, log_data); +function run_test_script(script_name) + + log_data("start", { metadata = test_metadata }); + local ok, result, err = pcall(main, log_data, script_name); + + local exit_code = 0; + if not ok then + print("TEST ERROR:", result); + exit_code = 2; + log_data("test-error", { error = result }); + elseif not result then + print("TEST FAILED", err); + exit_code = 1; + log_data("test-failed", { error = err }); + elseif not quiet then + print("TEST PASSED"); + log_data("test-passed"); + end + return exit_code; +end local exit_code = 0; -if not ok then - print("TEST ERROR:", result); - exit_code = 2; - log_data("test-error", { error = result }); -elseif not result then - print("TEST FAILED", err); - exit_code = 1; - log_data("test-failed", { error = err }); -else - print("TEST PASSED"); - log_data("test-passed"); +for i = 1, #arg do + local ret = run_test_script(arg[i]); + if ret > exit_code then + exit_code = ret; + end end if result_log then