Class: Test::Unit::UI::Statistics::BaseRunner
- Inherits:
-
TestRunner
- Object
- TestRunner
- Test::Unit::UI::Statistics::BaseRunner
- Defined in:
- lib/test/unit/ui/statistics/base_runner.rb
Overview
Inherit from this class to create a runner that has access to statistics.
Implement any/all of the following callbacks in your subclass:
-
reset
-
started
-
finished
-
suite_started
-
suite_finished
-
case_started
-
case_finished
-
assertion
-
error
-
failure
-
pending
-
omission
-
notification
-
fault
Direct Known Subclasses
Instance Attribute Summary collapse
-
#result ⇒ Object
:nodoc:.
Class Method Summary collapse
-
.each_subclass ⇒ Object
:nodoc:.
-
.inherited(kls) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#attach_to_mediator ⇒ Object
Inherited from TestRunner, sets up callbacks via i-var.
-
#callback(*types) ⇒ Object
Forward to methods (in-order) that we might respond to.
-
#cstat ⇒ Object
Case Statistics.
-
#initialize(suite, options = {}) ⇒ BaseRunner
constructor
:nodoc:.
-
#sstat ⇒ Object
Suite Statistics.
-
#stats_assertion(testresult) ⇒ Object
:nodoc:.
-
#stats_case_finished(name) ⇒ Object
:nodoc:.
-
#stats_case_started(name) ⇒ Object
:nodoc:.
-
#stats_fault(fault) ⇒ Object
:nodoc:.
-
#stats_handle_error(fault) ⇒ Object
:nodoc:.
-
#stats_handle_failure(fault) ⇒ Object
:nodoc:.
-
#stats_handle_notification(fault) ⇒ Object
:nodoc:.
-
#stats_handle_omission(fault) ⇒ Object
:nodoc:.
-
#stats_handle_pending(fault) ⇒ Object
:nodoc:.
-
#stats_started(result) ⇒ Object
:nodoc:.
-
#stats_suite_finished(testsuite) ⇒ Object
:nodoc:.
-
#stats_suite_started(testsuite) ⇒ Object
:nodoc:.
-
#update_suites_with_case_statistics ⇒ Object
:nodoc:.
Constructor Details
#initialize(suite, options = {}) ⇒ BaseRunner
:nodoc:
47 48 49 50 51 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 47 def initialize suite, ={} #:nodoc: super @suite_stack = [] @output = [:output] || STDOUT end |
Instance Attribute Details
#result ⇒ Object
:nodoc:
27 28 29 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 27 def result @result end |
Class Method Details
.each_subclass ⇒ Object
:nodoc:
43 44 45 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 43 def self.each_subclass #:nodoc: @@subclasses.each {|kls| yield kls } end |
.inherited(kls) ⇒ Object
:nodoc:
39 40 41 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 39 def self.inherited kls #:nodoc: (@@subclasses ||= []) << kls end |
Instance Method Details
#attach_to_mediator ⇒ Object
Inherited from TestRunner, sets up callbacks via i-var.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 54 def attach_to_mediator #:nodoc: @mediator.add_listener(Test::Unit::UI::TestRunnerMediator::RESET, &callback(:reset)) @mediator.add_listener(Test::Unit::UI::TestRunnerMediator::STARTED, &callback(:stats_started, :started)) @mediator.add_listener(Test::Unit::UI::TestRunnerMediator::FINISHED, &callback(:finished)) @mediator.add_listener(Test::Unit::TestSuite::STARTED_OBJECT, &callback(:stats_suite_started, :suite_started)) @mediator.add_listener(Test::Unit::TestSuite::FINISHED_OBJECT, &callback(:suite_finished, :stats_suite_finished)) @mediator.add_listener(Test::Unit::TestCase::STARTED, &callback(:stats_case_started, :case_started)) @mediator.add_listener(Test::Unit::TestCase::FINISHED, &callback(:stats_case_finished, :case_finished)) @mediator.add_listener(Test::Unit::TestResult::PASS_ASSERTION, &callback(:stats_assertion, :assertion)) @mediator.add_listener(Test::Unit::TestResult::FAULT, &callback(:stats_fault, :fault)) end |
#callback(*types) ⇒ Object
Forward to methods (in-order) that we might respond to.
76 77 78 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 76 def callback *types #:nodoc: ->(*args) { types.select{|t| respond_to?(t) }.each{|t| send(t, *args) }} end |
#cstat ⇒ Object
Case Statistics
30 31 32 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 30 def cstat @method_metrics end |
#sstat ⇒ Object
Suite Statistics
35 36 37 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 35 def sstat @suite_stack.last end |
#stats_assertion(testresult) ⇒ Object
:nodoc:
101 102 103 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 101 def stats_assertion testresult #:nodoc: @method_metrics.pass += 1 end |
#stats_case_finished(name) ⇒ Object
:nodoc:
96 97 98 99 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 96 def stats_case_finished name #:nodoc: @method_metrics.complete update_suites_with_case_statistics end |
#stats_case_started(name) ⇒ Object
:nodoc:
92 93 94 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 92 def stats_case_started name #:nodoc: @method_metrics = CaseStatistics.new(@result) end |
#stats_fault(fault) ⇒ Object
:nodoc:
105 106 107 108 109 110 111 112 113 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 105 def stats_fault fault #:nodoc: base_type = fault.class.name.split('::').last.downcase stat_method_name = "stats_handle_#{base_type}".to_sym method_name = "#{base_type}".to_sym send(stat_method_name, fault) if respond_to?(method_name) send(method_name, fault) end end |
#stats_handle_error(fault) ⇒ Object
:nodoc:
115 116 117 118 119 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 115 def stats_handle_error fault #:nodoc: # Don't count errors before setup (i.e. in startup). return unless @method_metrics @method_metrics.errs += 1 end |
#stats_handle_failure(fault) ⇒ Object
:nodoc:
121 122 123 124 125 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 121 def stats_handle_failure fault #:nodoc: # The PASS_ASSERTION message just means it was run, we handle failures @method_metrics.fail += 1 @method_metrics.pass -= 1 end |
#stats_handle_notification(fault) ⇒ Object
:nodoc:
135 136 137 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 135 def stats_handle_notification fault #:nodoc: @method_metrics.note += 1 end |
#stats_handle_omission(fault) ⇒ Object
:nodoc:
131 132 133 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 131 def stats_handle_omission fault #:nodoc: @method_metrics.omit += 1 end |
#stats_handle_pending(fault) ⇒ Object
:nodoc:
127 128 129 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 127 def stats_handle_pending fault #:nodoc: @method_metrics.pend += 1 end |
#stats_started(result) ⇒ Object
:nodoc:
80 81 82 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 80 def stats_started result #:nodoc: @result = result end |
#stats_suite_finished(testsuite) ⇒ Object
:nodoc:
88 89 90 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 88 def stats_suite_finished testsuite #:nodoc: @suite_stack.pop end |
#stats_suite_started(testsuite) ⇒ Object
:nodoc:
84 85 86 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 84 def stats_suite_started testsuite #:nodoc: @suite_stack << SuiteStatistics.new(testsuite) end |
#update_suites_with_case_statistics ⇒ Object
:nodoc:
139 140 141 142 143 |
# File 'lib/test/unit/ui/statistics/base_runner.rb', line 139 def update_suites_with_case_statistics #:nodoc: @suite_stack.each do |suite| suite.add_test_case_statistics @method_metrics end end |