Class: RSpec::Core::Notifications::ProfileNotification
- Inherits:
-
Object
- Object
- RSpec::Core::Notifications::ProfileNotification
- 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
-
#duration ⇒ Float
the time taken (in seconds) to run the suite.
-
#example_groups ⇒ Array<RSpec::Core::Profiler>
example groups run.
-
#examples ⇒ Array<RSpec::Core::Example>
the examples run.
-
#number_of_examples ⇒ Fixnum
the number of examples to profile.
Instance Method Summary collapse
-
#initialize(duration, examples, number_of_examples, example_groups) ⇒ ProfileNotification
constructor
A new instance of ProfileNotification.
-
#percentage ⇒ String
The percentage of total time taken.
-
#slow_duration ⇒ Float
The time taken (in seconds) to run the slowest examples.
-
#slowest_examples ⇒ Array<RSpec::Core::Example>
The slowest examples.
-
#slowest_groups ⇒ Array<RSpec::Core::Example>
The slowest example groups.
Constructor Details
#initialize(duration, examples, number_of_examples, example_groups) ⇒ ProfileNotification
Returns a new instance of ProfileNotification.
405 406 407 408 409 410 |
# File 'lib/rspec/core/notifications.rb', line 405 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
#duration ⇒ Float
the time taken (in seconds) to run the suite
404 405 406 |
# File 'lib/rspec/core/notifications.rb', line 404 def duration @duration end |
#example_groups ⇒ Array<RSpec::Core::Profiler>
example groups run
404 405 406 |
# File 'lib/rspec/core/notifications.rb', line 404 def example_groups @example_groups end |
#examples ⇒ Array<RSpec::Core::Example>
the examples run
404 405 406 |
# File 'lib/rspec/core/notifications.rb', line 404 def examples @examples end |
#number_of_examples ⇒ Fixnum
the number of examples to profile
404 405 406 |
# File 'lib/rspec/core/notifications.rb', line 404 def number_of_examples @number_of_examples end |
Instance Method Details
#percentage ⇒ String
Returns the percentage of total time taken.
430 431 432 433 434 435 436 |
# File 'lib/rspec/core/notifications.rb', line 430 def percentage @percentage ||= begin time_taken = slow_duration / duration '%.1f' % ((time_taken.nan? ? 0.0 : time_taken) * 100) end end |
#slow_duration ⇒ Float
Returns the time taken (in seconds) to run the slowest examples.
422 423 424 425 426 427 |
# File 'lib/rspec/core/notifications.rb', line 422 def slow_duration @slow_duration ||= slowest_examples.inject(0.0) do |i, e| i + e.execution_result.run_time end end |
#slowest_examples ⇒ Array<RSpec::Core::Example>
Returns the slowest examples.
414 415 416 417 418 419 |
# File 'lib/rspec/core/notifications.rb', line 414 def slowest_examples @slowest_examples ||= examples.sort_by do |example| -example.execution_result.run_time end.first(number_of_examples) end |
#slowest_groups ⇒ Array<RSpec::Core::Example>
Returns the slowest example groups.
439 440 441 |
# File 'lib/rspec/core/notifications.rb', line 439 def slowest_groups @slowest_groups ||= calculate_slowest_groups end |