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.

Constant Summary

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#durationFloat

the time taken (in seconds) to run the suite



433
434
435
# File 'lib/rspec/core/notifications.rb', line 433

def duration
  @duration
end

#examplesArray<RSpec::Core::Example>

the examples run



433
434
435
# File 'lib/rspec/core/notifications.rb', line 433

def examples
  @examples
end

#failed_examplesArray<RSpec::Core::Example>

the failed examples



433
434
435
# File 'lib/rspec/core/notifications.rb', line 433

def failed_examples
  @failed_examples
end

#load_timeFloat

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



433
434
435
# File 'lib/rspec/core/notifications.rb', line 433

def load_time
  @load_time
end

#pending_examplesArray<RSpec::Core::Example>

the pending examples



433
434
435
# File 'lib/rspec/core/notifications.rb', line 433

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.



488
489
490
491
492
493
494
# File 'lib/rspec/core/notifications.rb', line 488

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.



471
472
473
474
475
476
477
478
479
# File 'lib/rspec/core/notifications.rb', line 471

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



437
438
439
# File 'lib/rspec/core/notifications.rb', line 437

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns the number of failed examples



443
444
445
# File 'lib/rspec/core/notifications.rb', line 443

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString



498
499
500
# File 'lib/rspec/core/notifications.rb', line 498

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

#formatted_load_timeString



504
505
506
# File 'lib/rspec/core/notifications.rb', line 504

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

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



510
511
512
513
514
515
516
517
518
519
520
# File 'lib/rspec/core/notifications.rb', line 510

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



449
450
451
# File 'lib/rspec/core/notifications.rb', line 449

def pending_count
  @pending_count ||= pending_examples.size
end

#totals_lineString

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



455
456
457
458
459
460
# File 'lib/rspec/core/notifications.rb', line 455

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
  summary
end