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
-
.add_report(name, report) ⇒ Object
Register a new Report.
-
.autorun=(flag) ⇒ Object
Set to
false
to avoid running testsat_exit
. -
.autorun? ⇒ Boolean
Checks to see if tests should be run
at_exit
or not. -
.backtrace_filter ⇒ Object
The object that filters the backtrace.
-
.backtrace_filter=(filter) ⇒ Object
Set what object will filter the backtrace.
-
.context(description, &block) ⇒ Object
(also: describe)
Define a top level test context where to define tests.
-
.fail_early=(flag) ⇒ Object
Set to
true
if tests should stop on the first failure. -
.fail_early? ⇒ Boolean
Checks to see if tests should stop on the first failure.
-
.report(name, *report_args) ⇒ Object
Load a report by name, initializing it with the extra arguments provided.
-
.report_with(name, *report_args) ⇒ Object
Select the name of the Report to use when running tests.
-
.run_all_tests!(options = {}) ⇒ Object
Run all registered test cases through the selected report.
- .story(description, &block) ⇒ Object
- .test_cases ⇒ Object
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=
30 31 32 |
# File 'lib/protest.rb', line 30 def self.autorun? !!@autorun end |
.backtrace_filter ⇒ Object
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=
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!( = {}) 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
81 82 83 |
# File 'lib/protest.rb', line 81 def self.test_cases @test_cases ||= [] end |