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



406
407
408
409
410
411
# File 'lib/rspec/core/notifications.rb', line 406

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



405
406
407
# File 'lib/rspec/core/notifications.rb', line 405

def duration
  @duration
end

#example_groupsArray<RSpec::Core::Profiler>

example groups run



405
406
407
# File 'lib/rspec/core/notifications.rb', line 405

def example_groups
  @example_groups
end

#examplesArray<RSpec::Core::Example>

the examples run



405
406
407
# File 'lib/rspec/core/notifications.rb', line 405

def examples
  @examples
end

#number_of_examplesFixnum

the number of examples to profile



405
406
407
# File 'lib/rspec/core/notifications.rb', line 405

def number_of_examples
  @number_of_examples
end

Instance Method Details

#percentageString



431
432
433
434
435
436
437
# File 'lib/rspec/core/notifications.rb', line 431

def percentage
  @percentage ||=
    begin
      time_taken = slow_duration / duration
      '%.1f' % ((time_taken.nan? ? 0.0 : time_taken) * 100)
    end
end

#slow_durationFloat



423
424
425
426
427
428
# File 'lib/rspec/core/notifications.rb', line 423

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>



415
416
417
418
419
420
# File 'lib/rspec/core/notifications.rb', line 415

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>



440
441
442
# File 'lib/rspec/core/notifications.rb', line 440

def slowest_groups
  @slowest_groups ||= calculate_slowest_groups
end