class Rutema::Runners::Default
Attributes
context[R]
setup[RW]
teardown[RW]
Public Class Methods
new(context,queue)
click to toggle source
# File lib/rutema/core/runner.rb, line 11 def initialize context,queue @setup=nil @teardown=nil @context=context || Hash.new @queue = queue @number_of_runs=0 end
Public Instance Methods
run(spec)
click to toggle source
# File lib/rutema/core/runner.rb, line 19 def run spec steps=[] status=:success state={'start_time'=>Time.now, "sequence_id"=>@number_of_runs,:test=>spec.name} message(:test=>spec.name,:text=>'started') if @setup message(:test=>spec.name,:text=>'setup') executed_steps,status=run_scenario("_setup_",@setup.scenario,@context) steps+=executed_steps end if status!=:error message(:test=>spec.name,:text=>'running') executed_steps,status=run_scenario(spec.name,spec.scenario,@context) steps+=executed_steps else message(:test=>spec.name,'number'=>0,'status'=>:error,'out'=>"Setup failed",'err'=>"",'duration'=>0) end state['status']=status if @teardown message(:test=>spec.name,:text=>'teardown') executed_steps,status=run_scenario("_teardown_",@teardown.scenario,@context) end message(:test=>spec.name,:text=>'finished') state["stop_time"]=Time.now state['steps']=steps @number_of_runs+=1 return state end
Private Instance Methods
run_scenario(name,scenario,meta)
click to toggle source
# File lib/rutema/core/runner.rb, line 49 def run_scenario name,scenario,meta executed_steps=[] status=:warning begin stps=scenario.steps if stps.empty? error(name,"Scenario #{name} contains no steps") status=:error else stps.each do |s| executed_steps<<run_step(s,meta) message(:test=>name,:text=>s.to_s,'number'=>s.number,'status'=>s.status,'out'=>s.output,'err'=>s.error,'duration'=>s.exec_time) status=s.status break if :error==s.status end end rescue error(name,$!.message) status=:error end return executed_steps,status end
run_step(step,meta)
click to toggle source
# File lib/rutema/core/runner.rb, line 71 def run_step step,meta if step.has_cmd? && step.cmd.respond_to?(:run) step.cmd.run(meta) else message("No command associated with step '#{step.step_type}'. Step number is #{step.number}") step.status=:warning end step.status=:success if step.ignore? return step end