Class: RSpec::Core::Notifications::SummaryNotification

Inherits:
Struct
  • Object
show all
Defined in:
lib/rspec/core/notifications.rb,
lib/rspec/core/notifications.rb

Overview

The SummaryNotification holds information about the results of running a test suite. It is used by formatters to provide information at the end of the test run.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#durationFloat

the time taken (in seconds) to run the suite



293
294
295
# File 'lib/rspec/core/notifications.rb', line 293

def duration
  @duration
end

#errors_outside_of_examples_countInteger

the number of errors that have occurred processing the spec suite



293
294
295
# File 'lib/rspec/core/notifications.rb', line 293

def errors_outside_of_examples_count
  @errors_outside_of_examples_count
end

#examplesArray<RSpec::Core::Example>

the examples run



293
294
295
# File 'lib/rspec/core/notifications.rb', line 293

def examples
  @examples
end

#failed_examplesArray<RSpec::Core::Example>

the failed examples



293
294
295
# File 'lib/rspec/core/notifications.rb', line 293

def failed_examples
  @failed_examples
end

#load_timeFloat

the number of seconds taken to boot RSpec and load the spec files



293
294
295
# File 'lib/rspec/core/notifications.rb', line 293

def load_time
  @load_time
end

#pending_examplesArray<RSpec::Core::Example>

the pending examples



293
294
295
# File 'lib/rspec/core/notifications.rb', line 293

def pending_examples
  @pending_examples
end

Instance Method Details

#colorized_rerun_commands(colorizer = ::RSpec::Core::Formatters::ConsoleCodes) ⇒ String

Formats failures into a rerunable command format.



355
356
357
358
359
360
361
# File 'lib/rspec/core/notifications.rb', line 355

def colorized_rerun_commands(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
  "\nFailed examples:\n\n" +
  failed_examples.map do |example|
    colorizer.wrap("rspec #{rerun_argument_for(example)}", RSpec.configuration.failure_color) + " " +
    colorizer.wrap("# #{example.full_description}",   RSpec.configuration.detail_color)
  end.join("\n")
end

#colorized_totals_line(colorizer = ::RSpec::Core::Formatters::ConsoleCodes) ⇒ String

Wraps the results line with colors based on the configured colors for failure, pending, and success. Defaults to red, yellow, green accordingly.



338
339
340
341
342
343
344
345
346
# File 'lib/rspec/core/notifications.rb', line 338

def colorized_totals_line(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
  if failure_count > 0
    colorizer.wrap(totals_line, RSpec.configuration.failure_color)
  elsif pending_count > 0
    colorizer.wrap(totals_line, RSpec.configuration.pending_color)
  else
    colorizer.wrap(totals_line, RSpec.configuration.success_color)
  end
end

#example_countFixnum

Returns the number of examples run



299
300
301
# File 'lib/rspec/core/notifications.rb', line 299

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns the number of failed examples



305
306
307
# File 'lib/rspec/core/notifications.rb', line 305

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString



365
366
367
# File 'lib/rspec/core/notifications.rb', line 365

def formatted_duration
  Formatters::Helpers.format_duration(duration)
end

#formatted_load_timeString



371
372
373
# File 'lib/rspec/core/notifications.rb', line 371

def formatted_load_time
  Formatters::Helpers.format_duration(load_time)
end

#fully_formatted(colorizer = ::RSpec::Core::Formatters::ConsoleCodes) ⇒ String



377
378
379
380
381
382
383
384
385
386
387
# File 'lib/rspec/core/notifications.rb', line 377

def fully_formatted(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
  formatted = "\nFinished in #{formatted_duration} " \
              "(files took #{formatted_load_time} to load)\n" \
              "#{colorized_totals_line(colorizer)}\n"

  unless failed_examples.empty?
    formatted << colorized_rerun_commands(colorizer) << "\n"
  end

  formatted
end

#pending_countFixnum

Returns the number of pending examples



311
312
313
# File 'lib/rspec/core/notifications.rb', line 311

def pending_count
  @pending_count ||= pending_examples.size
end

#totals_lineString

Returns A line summarising the result totals of the spec run.



317
318
319
320
321
322
323
324
325
326
327
# File 'lib/rspec/core/notifications.rb', line 317

def totals_line
  summary = Formatters::Helpers.pluralize(example_count, "example")
  summary << ", " << Formatters::Helpers.pluralize(failure_count, "failure")
  summary << ", #{pending_count} pending" if pending_count > 0
  if errors_outside_of_examples_count > 0
    summary << ", "
    summary << Formatters::Helpers.pluralize(errors_outside_of_examples_count, "error")
    summary << " occurred outside of examples"
  end
  summary
end