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
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
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
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
The object that filters the backtrace
# File lib/protest.rb, line 75 def self.backtrace_filter @backtrace_filter end
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
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
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
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 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
# 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