module Protest

Constants

VERSION

Public Class Methods

add_report(name, report) click to toggle source

Register a new Report. This will make your report available to Protest, allowing you to run your tests through this report. For example

module Protest
  class Reports::MyAwesomeReport < Report
  end

  add_report :awesomesauce, MyAwesomeReport
end

See ::report_with to see how to select which report will be used.

# File lib/protest.rb, line 21
def self.add_report(name, report)
  available_reports[name] = report
end
add_test_case(test_case) click to toggle source

Register a test case to be run with Protest. This is done automatically whenever you subclass Protest::TestCase, so you probably shouldn’t pay much attention to this method.

# File lib/protest.rb, line 28
def self.add_test_case(test_case)
  available_test_cases << test_case
end
autorun=(flag) click to toggle source

Set to false to avoid running tests at_exit. Default is true.

# File lib/protest.rb, line 33
def self.autorun=(flag)
  @autorun = flag
end
autorun?() click to toggle source

Checks to see if tests should be run at_exit or not. Default is true. See ::autorun=

# File lib/protest.rb, line 39
def self.autorun?
  !!@autorun
end
backtrace_filter() click to toggle source

The object that filters the backtrace

# File lib/protest.rb, line 75
def self.backtrace_filter
  @backtrace_filter
end
backtrace_filter=(filter) click to toggle source

Set what object will filter the backtrace. It must respond to filter_backtrace, taking a backtrace array and a prefix path.

# File lib/protest.rb, line 70
def self.backtrace_filter=(filter)
  @backtrace_filter = filter
end
context(description, &block) click to toggle source

Define a top level test context where to define tests. This works exactly the same as subclassing TestCase explicitly.

Protest.context "A user" do
  ...
end

is just syntax sugar to write:

class TestUser < Protest::TestCase
  self.description = "A user"
  ...
end
# File lib/protest/test_case.rb, line 15
def self.context(description, &block)
  TestCase.context(description, &block)
end
Also aliased as: describe, story
describe(description, &block) click to toggle source
Alias for: context
report(name, *report_args) click to toggle source

Load a report by name, initializing it with the extra arguments provided. If the given name doesn’t match a report registered via ::add_report then the method will raise IndexError.

# File lib/protest.rb, line 64
def self.report(name, *report_args)
  available_reports.fetch(name).new(*report_args)
end
report_with(name, *report_args) click to toggle source

Select the name of the Report to use when running tests. See ::add_report for more information on registering a report.

Any extra arguments will be forwarded to the report’s initialize method.

The default report is Protest::Reports::Progress

# File lib/protest.rb, line 57
def self.report_with(name, *report_args)
  @report = report(name, *report_args)
end
run_all_tests!(*report_args) click to toggle source

Run all registered test cases through the selected report. You can pass arguments to the Report constructor here.

See ::add_test_case and ::report_with

# File lib/protest.rb, line 47
def self.run_all_tests!(*report_args)
  Runner.new(@report).run(*available_test_cases)
end
scenario(name, &block) click to toggle source
# File lib/protest/stories.rb, line 10
def self.scenario(name, &block)
  scenario = Protest::Stories::Scenario.new(name)

  Protest::Stories.all[self].scenarios << scenario

  test(name) do
    @scenario = scenario
    instance_eval(&block)
  end
end
story(description, &block) click to toggle source
Alias for: context