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



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

def duration
  @duration
end

#errors_outside_of_examples_countInteger

the number of errors that have occurred processing the spec suite



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

def errors_outside_of_examples_count
  @errors_outside_of_examples_count
end

#examplesArray<RSpec::Core::Example>

the examples run



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

def examples
  @examples
end

#failed_examplesArray<RSpec::Core::Example>

the failed examples



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

def failed_examples
  @failed_examples
end

#load_timeFloat

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



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

def load_time
  @load_time
end

#pending_examplesArray<RSpec::Core::Example>

the pending examples



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

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.



364
365
366
367
368
369
370
# File 'lib/rspec/core/notifications.rb', line 364

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.



347
348
349
350
351
352
353
354
355
# File 'lib/rspec/core/notifications.rb', line 347

def colorized_totals_line(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
  if failure_count > 0 || errors_outside_of_examples_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.



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

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns the number of failed examples.



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

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString



374
375
376
# File 'lib/rspec/core/notifications.rb', line 374

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

#formatted_load_timeString



380
381
382
# File 'lib/rspec/core/notifications.rb', line 380

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

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



386
387
388
389
390
391
392
393
394
395
396
# File 'lib/rspec/core/notifications.rb', line 386

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.



318
319
320
# File 'lib/rspec/core/notifications.rb', line 318

def pending_count
  @pending_count ||= pending_examples.size
end

#totals_lineString

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



324
325
326
327
328
329
330
331
332
333
334
335
336
# File 'lib/rspec/core/notifications.rb', line 324

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