commit 6c6c7a4b6305e34d4c7db6d601705ee20ff0e9cb
parent 4a0e87f86be277c8777bb143b99d65edc4ecbff7
Author: Richard Ipsum <richardipsum@fastmail.co.uk>
Date: Sat, 2 Mar 2019 13:09:14 +0000
Run yarns in the order in which they are written
Diffstat:
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/tyarn.in b/tyarn.in
@@ -121,7 +121,7 @@ function parse_scenario_line(scenario, scenario_name, steps_seen,
return last_step_type
end
-function _parse_scenarios(scenarios, file, scenario_name, scenario_line_no)
+function _parse_scenarios(scenario_list, scenarios, file, scenario_name, scenario_line_no)
debug('Parsing scenario', scenario_name)
last_step_type = nil
scenario = {}
@@ -151,10 +151,11 @@ function _parse_scenarios(scenarios, file, scenario_name, scenario_line_no)
-- validate, and store current scenario
validate_scenario(steps_seen, scenario_name, scenario_line_no)
scenarios[scenario_name] = scenario
+ table.insert(scenario_list, scenario_name)
-- now onto the next scenario
scenario_name = matches[2]
- _parse_scenarios(scenarios, file, scenario_name, line_no)
+ _parse_scenarios(scenario_list, scenarios, file, scenario_name, line_no)
return
end
end
@@ -164,10 +165,12 @@ function _parse_scenarios(scenarios, file, scenario_name, scenario_line_no)
if scenario_name then
validate_scenario(steps_seen, scenario_name, scenario_line_no)
scenarios[scenario_name] = scenario
+ table.insert(scenario_list, scenario_name)
end
end
function parse_scenarios(filepath)
+ scenario_list = {}
scenarios = {}
line_no = 0
@@ -190,9 +193,9 @@ function parse_scenarios(filepath)
end
-- now we have the base case, begin the recursion
- _parse_scenarios(scenarios, file, scenario_name, line_no)
+ _parse_scenarios(scenario_list, scenarios, file, scenario_name, line_no)
- return scenarios
+ return scenario_list, scenarios
end
function find_matching_implementation(implementations, step)
@@ -420,11 +423,11 @@ if parsed_args["debug"] or DEBUG then
end
end
-scenarios = parse_scenarios(parsed_args[1])
+scenario_list, scenarios = parse_scenarios(parsed_args[1])
implementations = parse_implementations(parsed_args[2])
-for k,v in pairs(scenarios) do
- run_scenario(scenarios, implementations, k, parsed_args['shell_lib'])
+for _, scenario_name in ipairs(scenario_list) do
+ run_scenario(scenarios, implementations, scenario_name, parsed_args['shell_lib'])
seen_scenario = true
end