Class: RSpec::Core::Reporter
- Defined in:
- lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb
Overview
A reporter will send notifications to listeners, usually formatters for the spec suite run.
Constant Summary collapse
- RSPEC_NOTIFICATIONS =
Set.new( [ :close, :deprecation, :deprecation_summary, :dump_failures, :dump_pending, :dump_profile, :dump_summary, :example_failed, :example_group_finished, :example_group_started, :example_passed, :example_pending, :example_started, :message, :seed, :start, :start_dump, :stop, :example_finished ])
Instance Attribute Summary collapse
- #examples ⇒ Object readonly
- #failed_examples ⇒ Object readonly
- #pending_examples ⇒ Object readonly
Instance Method Summary collapse
- #abort_with(msg, exit_status) ⇒ Object
- #close_after ⇒ Object
- #deprecation(hash) ⇒ Object
- #example_failed(example) ⇒ Object
- #example_finished(example) ⇒ Object
- #example_group_finished(group) ⇒ Object
- #example_group_started(group) ⇒ Object
- #example_passed(example) ⇒ Object
- #example_pending(example) ⇒ Object
- #example_started(example) ⇒ Object
-
#exit_early(exit_code) ⇒ Object
Reports a run that exited early without having run any examples.
- #fail_fast_limit_met? ⇒ Boolean
- #finish ⇒ Object
-
#initialize(configuration) ⇒ Reporter
constructor
A new instance of Reporter.
-
#message(message) ⇒ Object
Send a custom message to supporting formatters.
- #notify(event, notification) ⇒ Object
-
#notify_non_example_exception(exception, context_description) ⇒ Object
Provides a way to notify of an exception that is not tied to any particular example (such as an exception encountered in a :suite hook).
- #prepare_default(loader, output_stream, deprecation_stream) ⇒ Object
-
#publish(event, options = {}) ⇒ Object
Publish a custom event to supporting registered formatters.
-
#register_listener(listener, *notifications) ⇒ Object
Registers a listener to a list of notifications.
- #registered_listeners(notification) ⇒ Object
-
#report(expected_example_count) {|Block| ... } ⇒ Object
Initializes the report run and yields itself for further reporting.
- #start(expected_example_count, time = RSpec::Core::Time.now) ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize(configuration) ⇒ Reporter
Returns a new instance of Reporter.
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 14 def initialize(configuration) @configuration = configuration @listeners = Hash.new { |h, k| h[k] = Set.new } @examples = [] @failed_examples = [] @pending_examples = [] @duration = @start = @load_time = nil @non_example_exception_count = 0 @setup_default = lambda {} @setup = false @profiler = nil end |
Instance Attribute Details
#examples ⇒ Object (readonly)
28 29 30 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 28 def examples @examples end |
#failed_examples ⇒ Object (readonly)
28 29 30 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 28 def failed_examples @failed_examples end |
#pending_examples ⇒ Object (readonly)
28 29 30 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 28 def pending_examples @pending_examples end |
Instance Method Details
#abort_with(msg, exit_status) ⇒ Object
214 215 216 217 218 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 214 def abort_with(msg, exit_status) (msg) close exit!(exit_status) end |
#close_after ⇒ Object
193 194 195 196 197 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 193 def close_after yield ensure close end |
#deprecation(hash) ⇒ Object
155 156 157 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 155 def deprecation(hash) notify :deprecation, Notifications::DeprecationNotification.from_hash(hash) end |
#example_failed(example) ⇒ Object
143 144 145 146 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 143 def example_failed(example) @failed_examples << example notify :example_failed, Notifications::ExampleNotification.for(example) end |
#example_finished(example) ⇒ Object
133 134 135 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 133 def example_finished(example) notify :example_finished, Notifications::ExampleNotification.for(example) end |
#example_group_finished(group) ⇒ Object
122 123 124 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 122 def example_group_finished(group) notify :example_group_finished, Notifications::GroupNotification.new(group) unless group.descendant_filtered_examples.empty? end |
#example_group_started(group) ⇒ Object
117 118 119 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 117 def example_group_started(group) notify :example_group_started, Notifications::GroupNotification.new(group) unless group.descendant_filtered_examples.empty? end |
#example_passed(example) ⇒ Object
138 139 140 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 138 def example_passed(example) notify :example_passed, Notifications::ExampleNotification.for(example) end |
#example_pending(example) ⇒ Object
149 150 151 152 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 149 def example_pending(example) @pending_examples << example notify :example_pending, Notifications::ExampleNotification.for(example) end |
#example_started(example) ⇒ Object
127 128 129 130 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 127 def example_started(example) @examples << example notify :example_started, Notifications::ExampleNotification.for(example) end |
#exit_early(exit_code) ⇒ Object
Reports a run that exited early without having run any examples.
84 85 86 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 84 def exit_early(exit_code) report(0) { exit_code } end |
#fail_fast_limit_met? ⇒ Boolean
221 222 223 224 225 226 227 228 229 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 221 def fail_fast_limit_met? return false unless (fail_fast = @configuration.fail_fast) if fail_fast == true @failed_examples.any? else fail_fast <= @failed_examples.size end end |
#finish ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 173 def finish close_after do stop notify :start_dump, Notifications::NullNotification notify :dump_pending, Notifications::ExamplesNotification.new(self) notify :dump_failures, Notifications::ExamplesNotification.new(self) notify :deprecation_summary, Notifications::NullNotification unless mute_profile_output? notify :dump_profile, Notifications::ProfileNotification.new(@duration, @examples, @configuration.profile_examples, @profiler.example_groups) end notify :dump_summary, Notifications::SummaryNotification.new(@duration, @examples, @failed_examples, @pending_examples, @load_time, @non_example_exception_count) notify :seed, Notifications::SeedNotification.new(@configuration.seed, seed_used?) end end |
#message(message) ⇒ Object
Send a custom message to supporting formatters.
99 100 101 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 99 def () notify :message, Notifications::MessageNotification.new() end |
#notify(event, notification) ⇒ Object
206 207 208 209 210 211 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 206 def notify(event, notification) ensure_listeners_ready registered_listeners(event).each do |formatter| formatter.__send__(event, notification) end end |
#notify_non_example_exception(exception, context_description) ⇒ Object
Provides a way to notify of an exception that is not tied to any particular example (such as an exception encountered in a :suite hook). Exceptions will be formatted the same way they normally are.
163 164 165 166 167 168 169 170 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 163 def notify_non_example_exception(exception, context_description) @configuration.world.non_example_failure = true @non_example_exception_count += 1 example = Example.new(AnonymousExampleGroup, context_description, {}) presenter = Formatters::ExceptionPresenter.new(exception, example, :indentation => 0) presenter.fully_formatted(nil) end |
#prepare_default(loader, output_stream, deprecation_stream) ⇒ Object
45 46 47 48 49 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 45 def prepare_default(loader, output_stream, deprecation_stream) @setup_default = lambda do loader.setup_default output_stream, deprecation_stream end end |
#publish(event, options = {}) ⇒ Object
Publish a custom event to supporting registered formatters.
108 109 110 111 112 113 114 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 108 def publish(event, ={}) if RSPEC_NOTIFICATIONS.include? event raise "RSpec::Core::Reporter#publish is intended for sending custom " \ "events not internal RSpec ones, please rename your custom event." end notify event, Notifications::CustomNotification.for() 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.
37 38 39 40 41 42 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 37 def register_listener(listener, *notifications) notifications.each do |notification| @listeners[notification.to_sym] << listener end true end |
#registered_listeners(notification) ⇒ Object
52 53 54 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 52 def registered_listeners(notification) @listeners[notification].to_a end |
#report(count, &block) ⇒ Object #report(count, &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.
71 72 73 74 75 76 77 78 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 71 def report(expected_example_count) start(expected_example_count) begin yield self ensure finish end end |
#start(expected_example_count, time = RSpec::Core::Time.now) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 89 def start(expected_example_count, time=RSpec::Core::Time.now) @start = time @load_time = (@start - @configuration.start_time).to_f notify :seed, Notifications::SeedNotification.new(@configuration.seed, seed_used?) notify :start, Notifications::StartNotification.new(expected_example_count, @load_time) end |
#stop ⇒ Object
200 201 202 203 |
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb', line 200 def stop @duration = (RSpec::Core::Time.now - @start).to_f if @start notify :stop, Notifications::ExamplesNotification.new(self) end |