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

Inherits:
Struct
  • Object
show all
Includes:
ShellEscape
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

Constants included from ShellEscape

ShellEscape::SHELLS_ALLOWING_UNQUOTED_IDS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ShellEscape

conditionally_quote, quote, shell_allows_unquoted_ids?

Instance Attribute Details

#durationFloat

the time taken (in seconds) to run the suite



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

def duration
  @duration
end

#errors_outside_of_examples_countInteger

the number of errors that have occurred processing the spec suite



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

def errors_outside_of_examples_count
  @errors_outside_of_examples_count
end

#examplesArray<RSpec::Core::Example>

the examples run



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

def examples
  @examples
end

#failed_examplesArray<RSpec::Core::Example>

the failed examples



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

def failed_examples
  @failed_examples
end

#load_timeFloat

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



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

def load_time
  @load_time
end

#pending_examplesArray<RSpec::Core::Example>

the pending examples



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

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.



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

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.



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

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



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

def example_count
  @example_count ||= examples.size
end

#failure_countFixnum

Returns the number of failed examples



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

def failure_count
  @failure_count ||= failed_examples.size
end

#formatted_durationString



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

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

#formatted_load_timeString



378
379
380
# File 'lib/rspec/core/notifications.rb', line 378

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

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



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

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



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

def pending_count
  @pending_count ||= pending_examples.size
end

#totals_lineString

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



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

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