main.lua

changeset 108
cd58c64c67c0
parent 107
65791ba388b9
child 109
f7609d1a5bdf
--- 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

mercurial