Module: Protest

Defined in:
lib/protest.rb,
lib/protest/tests.rb,
lib/protest/utils.rb,
lib/protest/report.rb,
lib/protest/runner.rb,
lib/protest/version.rb,
lib/protest/test_case.rb,
lib/protest/reports/turn.rb,
lib/protest/reports/summary.rb,
lib/protest/utils/summaries.rb,
lib/protest/reports/progress.rb,
lib/protest/reports/documentation.rb,
lib/protest/utils/colorful_output.rb,
lib/protest/utils/backtrace_filter.rb

Defined Under Namespace

Modules: Reports, TestWithErrors, Utils Classes: AssertionFailed, ErroredTest, FailedTest, PassedTest, Pending, PendingTest, Report, Runner, Test, TestCase

Constant Summary collapse

VERSION =
"0.6.0"

Class Method Summary collapse

Class Method Details

.add_report(name, report) ⇒ Object

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 Protest.report_with to see how to select which report will be used.



19
20
21
# File 'lib/protest.rb', line 19

def self.add_report(name, report)
  reports[name] = report
end

.autorun=(flag) ⇒ Object

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



24
25
26
# File 'lib/protest.rb', line 24

def self.autorun=(flag)
  @autorun = flag
end

.autorun?Boolean

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

Returns:

  • (Boolean)


30
31
32
# File 'lib/protest.rb', line 30

def self.autorun?
  !!@autorun
end

.backtrace_filterObject

The object that filters the backtrace



77
78
79
# File 'lib/protest.rb', line 77

def self.backtrace_filter
  @backtrace_filter
end

.backtrace_filter=(filter) ⇒ Object

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



72
73
74
# File 'lib/protest.rb', line 72

def self.backtrace_filter=(filter)
  @backtrace_filter = filter
end

.context(description, &block) ⇒ Object Also known as: describe

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


15
16
17
# File 'lib/protest/test_case.rb', line 15

def self.context(description, &block)
  TestCase.context(description, caller.at(0), &block)
end

.fail_early=(flag) ⇒ Object

Set to true if tests should stop on the first failure. Default is false



35
36
37
# File 'lib/protest.rb', line 35

def self.fail_early=(flag)
  @fail_early = flag
end

.fail_early?Boolean

Checks to see if tests should stop on the first failure. Default is false See Protest.fail_early=

Returns:

  • (Boolean)


41
42
43
# File 'lib/protest.rb', line 41

def self.fail_early?
  !!@fail_early
end

.report(name, *report_args) ⇒ Object

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



66
67
68
# File 'lib/protest.rb', line 66

def self.report(name, *report_args)
  reports.fetch(name).new(*report_args)
end

.report_with(name, *report_args) ⇒ Object

Select the name of the Report to use when running tests. See Protest.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::Documentation



59
60
61
# File 'lib/protest.rb', line 59

def self.report_with(name, *report_args)
  @report = report(name, *report_args)
end

.run_all_tests!(options = {}) ⇒ Object

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

See Protest.add_test_case and Protest.report_with



49
50
51
# File 'lib/protest.rb', line 49

def self.run_all_tests!(options = {})
  Runner.new(@report).run(test_cases, options)
end

.story(description, &block) ⇒ Object



22
23
24
25
# File 'lib/protest/test_case.rb', line 22

def story(description, &block)
  warn "[DEPRECATED] `story` alias is deprecated. Use `describe` or `context` instead."
  context(description, &block)
end

.test_casesObject



81
82
83
# File 'lib/protest.rb', line 81

def self.test_cases
  @test_cases ||= []
end