module RSpec::Expectations::ExpectationHelper

Public Instance Methods

handle_failure(matcher, message, failure_message_method) click to toggle source
# File lib/super_diff/rspec/monkey_patches.rb, line 23
def handle_failure(matcher, message, failure_message_method)
  message = message.call if message.respond_to?(:call)
  message ||= matcher.__send__(failure_message_method)

  if matcher.respond_to?(:diffable?) && matcher.diffable?
    # Look for expected_for_diff and actual_for_diff if possible
    expected =
      if matcher.respond_to?(:expected_for_diff)
        matcher.expected_for_diff
      else
        matcher.expected
      end

    actual =
      if matcher.respond_to?(:actual_for_diff)
        matcher.actual_for_diff
      else
        matcher.actual
      end

    ::RSpec::Expectations.fail_with(message, expected, actual)
  else
    ::RSpec::Expectations.fail_with(message)
  end
end