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