Class: RSpec::Core::Reporter
- Inherits:
-
Object
- Object
- RSpec::Core::Reporter
- Defined in:
- lib/rspec/core/reporter.rb
Constant Summary collapse
- NOTIFICATIONS =
%W[start message example_group_started example_group_finished example_started example_passed example_failed example_pending start_dump dump_pending dump_failures dump_summary seed close stop deprecation deprecation_summary].map { |n| n.to_sym }
Instance Method Summary collapse
- #deprecation(message) ⇒ Object
- #example_failed(example) ⇒ Object
- #example_group_finished(group) ⇒ Object
- #example_group_started(group) ⇒ Object
- #example_passed(example) ⇒ Object
- #example_pending(example) ⇒ Object
- #example_started(example) ⇒ Object
- #finish(seed) ⇒ Object (also: #abort)
-
#initialize(*formatters) ⇒ Reporter
constructor
A new instance of Reporter.
- #message(message) ⇒ Object
- #notify(event, *args, &block) ⇒ Object
-
#register_listener(listener, *notifications) ⇒ Object
Registers a listener to a list of notifications.
- #registered_listeners(notification) ⇒ Object
-
#report(expected_example_count, seed = nil) ⇒ Object
Initializes the report run and yields itself for further reporting.
- #start(expected_example_count) ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(*formatters) ⇒ Reporter
Returns a new instance of Reporter.
7 8 9 10 11 12 13 14 |
# File 'lib/rspec/core/reporter.rb', line 7 def initialize(*formatters) @listeners = Hash.new { |h,k| h[k] = [] } formatters.each do |formatter| register_listener(formatter, *NOTIFICATIONS) end @example_count = @failure_count = @pending_count = 0 @duration = @start = nil end |
Instance Method Details
#deprecation(message) ⇒ Object
100 101 102 |
# File 'lib/rspec/core/reporter.rb', line 100 def deprecation() notify :deprecation, end |
#example_failed(example) ⇒ Object
90 91 92 93 |
# File 'lib/rspec/core/reporter.rb', line 90 def example_failed(example) @failure_count += 1 notify :example_failed, example end |
#example_group_finished(group) ⇒ Object
77 78 79 |
# File 'lib/rspec/core/reporter.rb', line 77 def example_group_finished(group) notify :example_group_finished, group unless group.descendant_filtered_examples.empty? end |
#example_group_started(group) ⇒ Object
73 74 75 |
# File 'lib/rspec/core/reporter.rb', line 73 def example_group_started(group) notify :example_group_started, group unless group.descendant_filtered_examples.empty? end |
#example_passed(example) ⇒ Object
86 87 88 |
# File 'lib/rspec/core/reporter.rb', line 86 def example_passed(example) notify :example_passed, example end |
#example_pending(example) ⇒ Object
95 96 97 98 |
# File 'lib/rspec/core/reporter.rb', line 95 def example_pending(example) @pending_count += 1 notify :example_pending, example end |
#example_started(example) ⇒ Object
81 82 83 84 |
# File 'lib/rspec/core/reporter.rb', line 81 def example_started(example) @example_count += 1 notify :example_started, example end |
#finish(seed) ⇒ Object Also known as: abort
104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/rspec/core/reporter.rb', line 104 def finish(seed) begin stop notify :start_dump notify :dump_pending notify :dump_failures notify :dump_summary, @duration, @example_count, @failure_count, @pending_count notify :deprecation_summary notify :seed, seed if seed ensure notify :close end end |
#message(message) ⇒ Object
69 70 71 |
# File 'lib/rspec/core/reporter.rb', line 69 def () notify :message, end |
#notify(event, *args, &block) ⇒ Object
125 126 127 128 129 |
# File 'lib/rspec/core/reporter.rb', line 125 def notify(event, *args, &block) registered_listeners(event).each do |formatter| formatter.send(event, *args, &block) end end |
#register_listener(listener, *notifications) ⇒ Object
Registers a listener to a list of notifications. The reporter will send notification of events to all registered listeners
22 23 24 25 26 27 |
# File 'lib/rspec/core/reporter.rb', line 22 def register_listener(listener, *notifications) notifications.each do |notification| @listeners[notification.to_sym] << listener if listener.respond_to?(notification) end true end |
#registered_listeners(notification) ⇒ Object
29 30 31 |
# File 'lib/rspec/core/reporter.rb', line 29 def registered_listeners(notification) @listeners[notification] end |
#report(count, &block) ⇒ Object #report(count, seed, &block) ⇒ Object
Initializes the report run and yields itself for further reporting. The block is required, so that the reporter can manage cleaning up after the run.
Warning:
The seed
argument is an internal API and is not guaranteed to be
supported in the future.
55 56 57 58 59 60 61 62 |
# File 'lib/rspec/core/reporter.rb', line 55 def report(expected_example_count, seed=nil) start(expected_example_count) begin yield self ensure finish(seed) end end |