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

Inherits:
Struct
  • Object
show all
Defined in:
lib/rspec/core/notifications.rb,
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

Instance Attribute Details

#durationFloat

the time taken (in seconds) to run the suite

Returns:

  • (Float)

    the current value of duration



577
578
579
# File 'lib/rspec/core/notifications.rb', line 577

def duration
  @duration
end

#examplesArray<RSpec::Core::Example>

the examples run

Returns:



577
578
579
# File 'lib/rspec/core/notifications.rb', line 577

def examples
  @examples
end

#number_of_examplesFixnum

the number of examples to profile

Returns:

  • (Fixnum)

    the current value of number_of_examples



577
578
579
# File 'lib/rspec/core/notifications.rb', line 577

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



596
597
598
599
600
601
602
# File 'lib/rspec/core/notifications.rb', line 596

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



588
589
590
591
592
593
# File 'lib/rspec/core/notifications.rb', line 588

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:



580
581
582
583
584
585
# File 'lib/rspec/core/notifications.rb', line 580

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:



605
606
607
# File 'lib/rspec/core/notifications.rb', line 605

def slowest_groups
  @slowest_groups ||= calculate_slowest_groups
end