123456789_123456789_123456789_123456789_123456789_

Class: RSpec::Core::Example::ExecutionResult

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
Inherits: Object
Defined in: rspec-core/lib/rspec/core/example.rb

Overview

Represents the result of executing an example. Behaves like a hash for backwards compatibility.

Instance Attribute Summary

Instance Method Summary

::RSpec::Core::HashImitatable - Included

Instance Attribute Details

#example_skipped?Boolean (readonly)

Returns:

  • (Boolean)

    Indicates if the example was completely skipped (typically done via :skip metadata or the RSpec::Core::Example#skip method). Skipped examples will have a :pending result. A :pending result can also come from examples that were marked as :pending, which causes them to be run, and produces a :failed result if the example passes.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 597

def example_skipped?
  status == :pending && !pending_exception
end

#exceptionException? (rw)

Returns:

  • (Exception, nil)

    The failure, if there was one.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 563

attr_accessor :exception

#finished_atTime (rw)

Returns:

  • (Time)

    When the example finished.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 569

attr_accessor :finished_at

#pending_exceptionException? (rw)

Returns:

  • (Exception, nil)

    The exception triggered while executing the pending example. If no exception was triggered it would no longer get a status of :pending unless it was tagged with :skip.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 582

attr_accessor :pending_exception

#pending_fixedBoolean (rw)

Returns:

  • (Boolean)

    For examples tagged with :pending, this indicates whether or not it now passes.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 586

attr_accessor :pending_fixed

#pending_fixed?Boolean (rw)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 588

def pending_fixed?
  !!pending_fixed
end

#pending_messageString? (rw)

Returns:

  • (String, nil)

    The reason the example was pending, or nil if the example was not pending.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 576

attr_accessor :pending_message

#run_timeFloat (rw)

Returns:

  • (Float)

    How long the example took in seconds.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 572

attr_accessor :run_time

#started_atTime (rw)

Returns:

  • (Time)

    When the example started.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 566

attr_accessor :started_at

#statusSymbol (rw)

Returns:

  • (Symbol)

    :passed, :failed or :pending.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 560

attr_accessor :status

Instance Method Details

#calculate_run_time(finished_at) (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 616

def calculate_run_time(finished_at)
  self.finished_at = finished_at
  self.run_time    = (finished_at - started_at).to_f
end

#ensure_timing_set(clock)

This method is for internal use only.

Populates finished_at and run_time if it has not yet been set

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 610

def ensure_timing_set(clock)
  calculate_run_time(clock.now) unless finished_at
end

#get_value(name) (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 634

def get_value(name)
  if name == :status
    status.to_s if status
  else
    super
  end
end

#hash_for_delegation (private)

For backwards compatibility we present #status as a string when presenting the legacy hash interface.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 623

def hash_for_delegation
  super.tap do |hash|
    hash[:status] &&= status.to_s
  end
end

#issue_deprecation(_method_name, *_args) (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 642

def issue_deprecation(_method_name, *_args)
  RSpec.deprecate("Treating `metadata[:execution_result]` as a hash",
                  :replacement => "the attributes methods to access the data")
end

#record_finished(status, finished_at)

This method is for internal use only.

Records the finished status of the example.

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 603

def record_finished(status, finished_at)
  self.status = status
  calculate_run_time(finished_at)
end

#set_value(name, value) (private)

[ GitHub ]

  
# File 'rspec-core/lib/rspec/core/example.rb', line 629

def set_value(name, value)
  value &&= value.to_sym if name == :status
  super(name, value)
end