class Crew::Tester
Attributes
hints[RW]
Public Class Methods
new(home, name, &blk)
click to toggle source
# File lib/crew/tester.rb, line 7 def initialize(home, name, &blk) @name = name @home = home @context_name = "#{@name}_test" @preparers = {} DSL.new(self).load(&blk) end
Public Instance Methods
add_preparer(name, &blk)
click to toggle source
# File lib/crew/tester.rb, line 48 def add_preparer(name, &blk) @preparers[name] = Preparer.new(name) @preparers[name].load(&blk) end
context(name, &blk)
click to toggle source
# File lib/crew/tester.rb, line 15 def context(name, &blk) if name @context_name = name else @home.add_context @context_name, &blk end end
run(opts)
click to toggle source
# File lib/crew/tester.rb, line 23 def run(opts) return if opts[:context_name] && @name != opts[:context_name] prepare(opts[:force_prepare]) task_count = 0 test_results = {} @home.each_task do |task| next unless opts[:test_name].nil? or opts[:test_name] == task.name preparer = @preparers.values.find {|p| p.match?(task.name)} raise "couldn't find preparer for task `#{task.name}'" unless preparer @home.in_context(@context_name) do @home.setup_mode = true @home.context.snapshot_name = preparer.name task.context = @home.context task.test!(self, opts) do |result| display_result result end end end end
Private Instance Methods
display_result(result)
click to toggle source
# File lib/crew/tester.rb, line 54 def display_result(result) logger.log "Result was #{result.status} for #{result.task_name}##{result.index} [#{result.context_name}]" end
prepare(force = false)
click to toggle source
# File lib/crew/tester.rb, line 58 def prepare(force = false) @home.in_context(@context_name) do @preparers.each do |name, preparer| raise "nooO! #{name}" unless preparer.setup @home.context.prepare_snapshot(name, force, &preparer.setup) end end end