123456789_123456789_123456789_123456789_123456789_

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

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Struct
Instance Chain:
Inherits: Struct
  • Object
Defined in: rspec-core/lib/rspec/core/notifications.rb,
rspec-core/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

::RSpec::Core::ShellEscape - Included

SHELLS_ALLOWING_UNQUOTED_IDS

Instance Attribute Summary

  • #duration rw

    The ‘SummaryNotification` holds information about the results of running a test suite.

  • #errors_outside_of_examples_count rw

    The ‘SummaryNotification` holds information about the results of running a test suite.

  • #examples rw

    The ‘SummaryNotification` holds information about the results of running a test suite.

  • #failed_examples rw

    The ‘SummaryNotification` holds information about the results of running a test suite.

  • #load_time rw

    The ‘SummaryNotification` holds information about the results of running a test suite.

  • #pending_examples rw

    The ‘SummaryNotification` holds information about the results of running a test suite.

Instance Method Summary

Instance Attribute Details

#duration (rw)

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.

[ GitHub ]

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

SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
:pending_examples, :load_time,
:errors_outside_of_examples_count)

#errors_outside_of_examples_count (rw)

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.

[ GitHub ]

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

SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
:pending_examples, :load_time,
:errors_outside_of_examples_count)

#examples (rw)

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.

[ GitHub ]

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

SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
:pending_examples, :load_time,
:errors_outside_of_examples_count)

#failed_examples (rw)

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.

[ GitHub ]

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

SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
:pending_examples, :load_time,
:errors_outside_of_examples_count)

#load_time (rw)

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.

[ GitHub ]

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

SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
:pending_examples, :load_time,
:errors_outside_of_examples_count)

#pending_examples (rw)

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.

[ GitHub ]

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

SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
:pending_examples, :load_time,
:errors_outside_of_examples_count)

Instance Method Details

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

Formats failures into a rerunable command format.

Parameters:

  • colorizer (#wrap) (defaults to: ::RSpec::Core::Formatters::ConsoleCodes)

    An object which supports wrapping text with specific colors.

Returns:

  • (String)

    A colorized summary line.

[ GitHub ]

  
# File 'rspec-core/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.

Parameters:

  • colorizer (#wrap) (defaults to: ::RSpec::Core::Formatters::ConsoleCodes)

    An object which supports wrapping text with specific colors.

Returns:

  • (String)

    A colorized results line.

[ GitHub ]

  
# File 'rspec-core/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

#duplicate_rerun_locations (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/notifications.rb', line 408

def duplicate_rerun_locations
  @duplicate_rerun_locations ||= begin
    locations = RSpec.world.all_examples.map(&:location_rerun_argument)

    Set.new.tap do |s|
      locations.group_by { |l| l }.each do |l, ls|
        s << l if ls.count > 1
      end
    end
  end
end

#example_countFixnum

Returns:

  • (Fixnum)

    the number of examples run

[ GitHub ]

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

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns:

  • (Fixnum)

    the number of failed examples

[ GitHub ]

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

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString

Returns:

  • (String)

    a formatted version of the time it took to run the suite

[ GitHub ]

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

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

#formatted_load_timeString

Returns:

  • (String)

    a formatted version of the time it took to boot ::RSpec and load the spec files

[ GitHub ]

  
# File 'rspec-core/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

Returns:

  • (String)

    The summary information fully formatted in the way that RSpec’s built-in formatters emit.

[ GitHub ]

  
# File 'rspec-core/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:

  • (Fixnum)

    the number of pending examples

[ GitHub ]

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

def pending_count
  @pending_count ||= pending_examples.size
end

#rerun_argument_for(example) (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/notifications.rb', line 402

def rerun_argument_for(example)
  location = example.location_rerun_argument
  return location unless duplicate_rerun_locations.include?(location)
  conditionally_quote(example.id)
end

#totals_lineString

Returns:

  • (String)

    A line summarising the result totals of the spec run.

[ GitHub ]

  
# File 'rspec-core/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