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



283
284
285
# File 'lib/rspec/core/notifications.rb', line 283

def duration
  @duration
end

#examplesArray<RSpec::Core::Example>

the examples run



283
284
285
# File 'lib/rspec/core/notifications.rb', line 283

def examples
  @examples
end

#failed_examplesArray<RSpec::Core::Example>

the failed examples



283
284
285
# File 'lib/rspec/core/notifications.rb', line 283

def failed_examples
  @failed_examples
end

#load_timeFloat

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



283
284
285
# File 'lib/rspec/core/notifications.rb', line 283

def load_time
  @load_time
end

#pending_examplesArray<RSpec::Core::Example>

the pending examples



283
284
285
# File 'lib/rspec/core/notifications.rb', line 283

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.



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

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.



322
323
324
325
326
327
328
329
330
# File 'lib/rspec/core/notifications.rb', line 322

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



288
289
290
# File 'lib/rspec/core/notifications.rb', line 288

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns the number of failed examples



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

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString



349
350
351
# File 'lib/rspec/core/notifications.rb', line 349

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

#formatted_load_timeString



355
356
357
# File 'lib/rspec/core/notifications.rb', line 355

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

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



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

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



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

def pending_count
  @pending_count ||= pending_examples.size
end

#totals_lineString

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



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

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