class Protest::Runner

Public Class Methods

new(report) click to toggle source

Set up the test runner. Takes in a report that will be passed to test cases for reporting.

# File lib/protest/runner.rb, line 5
def initialize(report)
  @report = report
end

Public Instance Methods

report(test) click to toggle source

Run a test and report if it passes, fails, or is pending. Takes the name of the test as an argument.

# File lib/protest/runner.rb, line 27
def report(test)
  fire_event(:test, Test.new(test))
  test.run(@report)
  fire_event(:pass, PassedTest.new(test))
rescue Pending => e
  fire_event :pending, PendingTest.new(test, e)
rescue AssertionFailed => e
  fire_event :failure, FailedTest.new(test, e)
  exit 1 if Protest.fail_early?
rescue Exception => e
  raise if e.is_a?(Interrupt)
  fire_event :error, ErroredTest.new(test, e)
  exit 1 if Protest.fail_early?
end
run(*test_cases) click to toggle source

Run a set of test cases, provided as arguments. This will fire relevant events on the runner's report, at the start and end of the test run, and before and after each test case (enter and exit.)

# File lib/protest/runner.rb, line 12
def run(*test_cases)
  fire_event :start
  test_cases.each do |test_case|
    fire_event :enter, test_case
    test_case.run(self)
    fire_event :exit, test_case
  end
rescue Interrupt
  $stderr.puts "Interrupted!"
ensure
  fire_event :end
end

Protected Instance Methods

fire_event(event, *args) click to toggle source
# File lib/protest/runner.rb, line 44
def fire_event(event, *args)
  event_handler_method = :"on_#{event}"
  @report.send(event_handler_method, *args) if @report.respond_to?(event_handler_method)
end