class RSpec::Core::SharedExampleGroupInclusionStackFrame
Contains information about the inclusion site of a shared example group.
Attributes
@return [String] the location where the shared example was included
Public Class Methods
@private
# File rspec-core/lib/rspec/core/example_group.rb, line 818 def self.current_backtrace shared_example_group_inclusions.reverse end
@private
# File rspec-core/lib/rspec/core/example_group.rb, line 796 def initialize(shared_group_name, inclusion_location) @shared_group_name = shared_group_name @inclusion_location = inclusion_location end
@private
# File rspec-core/lib/rspec/core/example_group.rb, line 823 def self.with_frame(name, location) current_stack = shared_example_group_inclusions if current_stack.any? { |frame| frame.shared_group_name == name } raise ArgumentError, "can't include shared examples recursively" else current_stack << new(name, location) yield end ensure current_stack.pop end
Public Instance Methods
@return [String] Description of this stack frame, in the form used by
RSpec's built-in formatters.
# File rspec-core/lib/rspec/core/example_group.rb, line 812 def description @description ||= "Shared Example Group: #{shared_group_name.inspect} " \ "called from #{formatted_inclusion_location}" end
@return [String] The {#inclusion_location}, formatted for display by a formatter.
# File rspec-core/lib/rspec/core/example_group.rb, line 802 def formatted_inclusion_location @formatted_inclusion_location ||= begin RSpec.configuration.backtrace_formatter.backtrace_line( inclusion_location.sub(/(:\d+):in .+$/, '\1') ) end end