main.lua

changeset 150
cf2b2fcd0bc1
parent 149
b2e397594cbd
child 154
855a32aa56ab
equal deleted inserted replaced
149:b2e397594cbd 150:cf2b2fcd0bc1
15 local action_timeout = 10; 15 local action_timeout = 10;
16 local verse_log_levels = { "warn", "error" }; 16 local verse_log_levels = { "warn", "error" };
17 local quiet = false; 17 local quiet = false;
18 local force_summary = false; 18 local force_summary = false;
19 local serve_mode = false; 19 local serve_mode = false;
20 local only_tags, skip_tags;
20 21
21 local property_rules = {}; 22 local property_rules = {};
22 23
23 local function apply_object_properties(class, name, object) 24 local function apply_object_properties(class, name, object)
24 for _, rule in ipairs(property_rules) do 25 for _, rule in ipairs(property_rules) do
69 end 70 end
70 elseif opt == "--skip-server-startup-log" then 71 elseif opt == "--skip-server-startup-log" then
71 skip_server_startup_log = true; 72 skip_server_startup_log = true;
72 elseif opt == "--step-timeout" then 73 elseif opt == "--step-timeout" then
73 action_timeout = assert(tonumber(get_value()), "number expected for --step-timeout"); 74 action_timeout = assert(tonumber(get_value()), "number expected for --step-timeout");
74 elseif opt == "--tag" then 75 elseif opt == "--meta" then
75 local tag = get_value(); 76 local tag = get_value();
76 local key, value = tag:match("^([^=]+):(.+)$"); 77 local key, value = tag:match("^([^=]+):(.+)$");
77 if key and value then 78 if key and value then
78 test_metadata[key] = value; 79 test_metadata[key] = value;
79 else 80 else
80 error("Unable to parse tag: "..tag); 81 error("Unable to parse metadata: "..tag);
81 end 82 end
83 elseif opt == "--with-tag" then
84 if not only_tags then
85 only_tags = {};
86 end
87 local tag = get_value();
88 local key, value = tag:match("^([^=]+):(.+)$");
89 table.insert(only_tags, { key or tag, value });
90 elseif opt == "--skip-tag" then
91 if not skip_tags then
92 skip_tags = {};
93 end
94 local tag = get_value();
95 local key, value = tag:match("^([^=]+):(.+)$");
96 table.insert(skip_tags, { key or tag, value });
82 elseif opt == "--verbose" or opt == "-v" then 97 elseif opt == "--verbose" or opt == "-v" then
83 verse_log_levels = { "debug", "info", "warn", "error" }; 98 verse_log_levels = { "debug", "info", "warn", "error" };
84 quiet = false; 99 quiet = false;
85 elseif opt == "--quiet" or opt == "-q" then 100 elseif opt == "--quiet" or opt == "-q" then
86 verse_log_levels = { "error" }; 101 verse_log_levels = { "error" };
281 end; 296 end;
282 297
283 local function run_test_script(script_name, script_text) 298 local function run_test_script(script_name, script_text)
284 local script = parse_script(script_text) 299 local script = parse_script(script_text)
285 local script_data = { title = script.title, summary = script.summary, tags = script.tags, filename = script_name }; 300 local script_data = { title = script.title, summary = script.summary, tags = script.tags, filename = script_name };
301
302 local tags = script.tags or {};
303 if skip_tags then
304 for _, skip in ipairs(skip_tags) do
305 local k, v = skip[1], skip[2];
306 if tags[k] and (not(v) or tags[k] == v) then
307 return { name = script.title or script.name, status = "skipped", reason = "skipping tag "..k };
308 end
309 end
310 end
311 if only_tags then
312 for _, only in ipairs(only_tags) do
313 local k, v = only[1], only[2];
314 if not tags[k] or (v and tags[k] ~= v) then
315 print(k, v, tags[k])
316 return { name = script.title or script.name, status = "skipped", reason = "not tagged "..k };
317 end
318 end
319 end
320
286 log_data("script", script_data); 321 log_data("script", script_data);
287 322
288 local ok, result, err = pcall(main, log_data, script); 323 local ok, result, err = pcall(main, log_data, script);
289 324
290 local event, status, reason; 325 local event, status, reason;

mercurial