class Protest::Report
Public Class Methods
Set the stream where the report will be written to. STDOUT by default.
# File lib/protest/report.rb, line 9 def initialize(stream=STDOUT) @stream = stream end
Define an event handler for your report. The different events fired in a report's life cycle are:
- :start
-
Fired by the runner when starting the whole test suite.
- :enter
-
Fired by the runner when starting a particular test case. It will get the test case as an argument.
- :test
-
Fired by a test before it starts running. It will get the instance of
TestCase
for the given test as an argument. - :assertion
-
Fired by a test each time an assertion is run.
- :pass
-
Fired by a test after it runs successfully without errors. It will get an instance of
PassedTest
as an argument. - :pending
-
Fired by a test which doesn't provide a test block or which calls
TestCase#pending
. It will get an instance ofPendingTest
as an argument. - :failure
-
Fired by a test in which an assertion failed. It will get an instance of
FailedTest
as an argument. - :error
-
Fired by a test where an uncaught exception was found. It will get an instance of
ErroredTest
as an argument. - :exit
-
Fired by the runner each time a test case finishes. It will take the test case as an argument.
- :end
-
Fired by the runner at the end of the whole test suite.
The event handler will receive the report as a first argument, plus any arguments documented above (depending on the event). It will also ensure that any handler for the same event declared on an ancestor class is run.
# File lib/protest/report.rb, line 38 def self.on(event, &block) define_method(:"on_#{event}") do |*args| begin super(*args) rescue NoMethodError end block.call(self, *args) end end
Public Instance Methods
Log an assertion was run (whether it succeeded or failed.)
# File lib/protest/report.rb, line 107 def add_assertion @assertions ||= 0 @assertions += 1 end
Number of assertions run during the report.
# File lib/protest/report.rb, line 113 def assertions @assertions || 0 end
List all the tests (as ErroredTest
instances) that raised an unrescued exception.
# File lib/protest/report.rb, line 96 def errors @errors ||= [] end
List all the tests (as FailedTest
instances) that failed an assertion.
# File lib/protest/report.rb, line 90 def failures @failures ||= [] end
Aggregated and ordered list of tests that either failed an assertion or raised an unrescued exception. Useful for displaying back to the user.
# File lib/protest/report.rb, line 102 def failures_and_errors @failures_and_errors ||= [] end
List all the tests (as PassedTest
instances) that passed.
# File lib/protest/report.rb, line 85 def passes @passes ||= [] end
List all the tests (as PendingTest
instances) that were pending.
# File lib/protest/report.rb, line 80 def pendings @pendings ||= [] end
# File lib/protest/report.rb, line 117 def tests @tests ||= [] end
Seconds taken since the test suite started running
# File lib/protest/report.rb, line 127 def time_elapsed Time.now - @started_at end
Amount ot tests run (whether passed, pending, failed, or errored.)
# File lib/protest/report.rb, line 122 def total_tests tests.size end