Class: RSpec::Core::Notifications::ProfileNotification

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec/core/notifications.rb

Overview

The ProfileNotification holds information about the results of running a test suite when profiling is enabled. It is used by formatters to provide information at the end of the test run for profiling information.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(duration, examples, number_of_examples, example_groups) ⇒ ProfileNotification

Returns a new instance of ProfileNotification.

430
431
432
433
434
435
# File 'lib/rspec/core/notifications.rb', line 430
def initialize(duration, examples, number_of_examples, example_groups)
  @duration = duration
  @examples = examples
  @number_of_examples = number_of_examples
  @example_groups = example_groups
end

Instance Attribute Details

#durationFloat

the time taken (in seconds) to run the suite

Returns:

  • (Float)

    the current value of duration

429
430
431
# File 'lib/rspec/core/notifications.rb', line 429
def duration
  @duration
end

#example_groupsArray<RSpec::Core::Profiler>

example groups run

Returns:

  • (Array<RSpec::Core::Profiler>)

    the current value of example_groups

429
430
431
# File 'lib/rspec/core/notifications.rb', line 429
def example_groups
  @example_groups
end

#examplesArray<RSpec::Core::Example>

the examples run

Returns:

429
430
431
# File 'lib/rspec/core/notifications.rb', line 429
def examples
  @examples
end

#number_of_examplesFixnum

the number of examples to profile

Returns:

  • (Fixnum)

    the current value of number_of_examples

429
430
431
# File 'lib/rspec/core/notifications.rb', line 429
def number_of_examples
  @number_of_examples
end

Instance Method Details

#percentageString

Returns the percentage of total time taken.

Returns:

  • (String)

    the percentage of total time taken

455
456
457
458
459
460
461
# File 'lib/rspec/core/notifications.rb', line 455
def percentage
  @percentage ||=
    begin
      time_taken = slow_duration / duration
      '%.1f' % ((time_taken.nan? ? 0.0 : time_taken) * 100)
    end
end

#slow_durationFloat

Returns the time taken (in seconds) to run the slowest examples.

Returns:

  • (Float)

    the time taken (in seconds) to run the slowest examples

447
448
449
450
451
452
# File 'lib/rspec/core/notifications.rb', line 447
def slow_duration
  @slow_duration ||=
    slowest_examples.inject(0.0) do |i, e|
      i + e.execution_result.run_time
    end
end

#slowest_examplesArray<RSpec::Core::Example>

Returns the slowest examples.

Returns:

439
440
441
442
443
444
# File 'lib/rspec/core/notifications.rb', line 439
def slowest_examples
  @slowest_examples ||=
    examples.sort_by do |example|
      -example.execution_result.run_time
    end.first(number_of_examples)
end

#slowest_groupsArray<RSpec::Core::Example>

Returns the slowest example groups.

Returns:

464
465
466
# File 'lib/rspec/core/notifications.rb', line 464
def slowest_groups
  @slowest_groups ||= calculate_slowest_groups
end