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

- (Float) duration

the time taken (in seconds) to run the suite

Returns:

  • (Float)

    the current value of duration

293
294
295
# File 'lib/rspec/core/notifications.rb', line 293
def duration
  @duration
end

- (Integer) errors_outside_of_examples_count

the number of errors that have occurred processing the spec suite

Returns:

  • (Integer)

    the current value of errors_outside_of_examples_count

293
294
295
# File 'lib/rspec/core/notifications.rb', line 293
def errors_outside_of_examples_count
  @errors_outside_of_examples_count
end

- (Array<RSpec::Core::Example>) examples

the examples run

Returns:

293
294
295
# File 'lib/rspec/core/notifications.rb', line 293
def examples
  @examples
end

- (Array<RSpec::Core::Example>) failed_examples

the failed examples

Returns:

293
294
295
# File 'lib/rspec/core/notifications.rb', line 293
def failed_examples
  @failed_examples
end

- (Float) load_time

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

Returns:

  • (Float)

    the current value of load_time

293
294
295
# File 'lib/rspec/core/notifications.rb', line 293
def load_time
  @load_time
end

- (Array<RSpec::Core::Example>) pending_examples

the pending examples

Returns:

293
294
295
# File 'lib/rspec/core/notifications.rb', line 293
def pending_examples
  @pending_examples
end

Instance Method Details

- (String) colorized_rerun_commands(colorizer = ::RSpec::Core::Formatters::ConsoleCodes)

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.

355
356
357
358
359
360
361
# File 'lib/rspec/core/notifications.rb', line 355
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

- (String) colorized_totals_line(colorizer = ::RSpec::Core::Formatters::ConsoleCodes)

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.

338
339
340
341
342
343
344
345
346
# File 'lib/rspec/core/notifications.rb', line 338
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

- (Fixnum) example_count

Returns the number of examples run

Returns:

  • (Fixnum)

    the number of examples run

299
300
301
# File 'lib/rspec/core/notifications.rb', line 299
def example_count
  @example_count ||= examples.size
end

- (Fixnum) failure_count

Returns the number of failed examples

Returns:

  • (Fixnum)

    the number of failed examples

305
306
307
# File 'lib/rspec/core/notifications.rb', line 305
def failure_count
  @failure_count ||= failed_examples.size
end

- (String) formatted_duration

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

Returns:

  • (String)

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

365
366
367
# File 'lib/rspec/core/notifications.rb', line 365
def formatted_duration
  Formatters::Helpers.format_duration(duration)
end

- (String) formatted_load_time

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

Returns:

  • (String)

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

371
372
373
# File 'lib/rspec/core/notifications.rb', line 371
def formatted_load_time
  Formatters::Helpers.format_duration(load_time)
end

- (String) fully_formatted(colorizer = ::RSpec::Core::Formatters::ConsoleCodes)

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

Returns:

  • (String)

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

377
378
379
380
381
382
383
384
385
386
387
# File 'lib/rspec/core/notifications.rb', line 377
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

- (Fixnum) pending_count

Returns the number of pending examples

Returns:

  • (Fixnum)

    the number of pending examples

311
312
313
# File 'lib/rspec/core/notifications.rb', line 311
def pending_count
  @pending_count ||= pending_examples.size
end

- (String) totals_line

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

Returns:

  • (String)

    A line summarising the result totals of the spec run.

317
318
319
320
321
322
323
324
325
326
327
# File 'lib/rspec/core/notifications.rb', line 317
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
  if errors_outside_of_examples_count > 0
    summary << ", "
    summary << Formatters::Helpers.pluralize(errors_outside_of_examples_count, "error")
    summary << " occurred outside of examples"
  end
  summary
end