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



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

def duration
  @duration
end

#examplesArray<RSpec::Core::Example>

the examples run



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

def examples
  @examples
end

#failed_examplesArray<RSpec::Core::Example>

the failed examples



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

def failed_examples
  @failed_examples
end

#load_timeFloat

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



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

def load_time
  @load_time
end

#pending_examplesArray<RSpec::Core::Example>

the pending examples



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

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.



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

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.



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

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



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

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns the number of failed examples



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

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString



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

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

#formatted_load_timeString



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

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

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



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

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



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

def pending_count
  @pending_count ||= pending_examples.size
end

#totals_lineString

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



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

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