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.5.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_filter ⇒ Object

The object that filters the backtrace



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

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.



61
62
63
# File 'lib/protest.rb', line 61

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, &block)
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.



55
56
57
# File 'lib/protest.rb', line 55

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



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

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

.run_all_tests!(*report_args) ⇒ 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



38
39
40
# File 'lib/protest.rb', line 38

def self.run_all_tests!(*report_args)
  Runner.new(@report).run(*test_cases)
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_cases ⇒ Object



70
71
72
# File 'lib/protest.rb', line 70

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