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