class RSpec::Matchers::MultiMatcherDiff
@api private Handles list of expected and actual value pairs when there is a need to render multiple diffs. Also can handle one pair.
Constants
- DEFAULT_DIFF_LABEL
-
@private Default diff label when there is only one matcher in diff output
- DESCRIPTION_MAX_LENGTH
-
@private Maximum readable matcher description length
Public Class Methods
@api private Wraps provided matcher list in instance of MultiMatcherDiff
. @param [Array<Any>] matchers list of matchers to wrap @return [RSpec::Matchers::MultiMatcherDiff]
# File rspec-expectations/lib/rspec/matchers/multi_matcher_diff.rb, line 37 def self.for_many_matchers(matchers) new(matchers.map { |m| [m.expected, diff_label_for(m), m.actual] }) end
@api private Wraps provided expected value in instance of MultiMatcherDiff
. If provided value is already an MultiMatcherDiff
then it just returns it. @param [Any] expected value to be wrapped @param [Any] actual value @return [RSpec::Matchers::MultiMatcherDiff]
# File rspec-expectations/lib/rspec/matchers/multi_matcher_diff.rb, line 27 def self.from(expected, actual) return expected if self === expected new([[expected, DEFAULT_DIFF_LABEL, actual]]) end
# File rspec-expectations/lib/rspec/matchers/multi_matcher_diff.rb, line 16 def initialize(expected_list) @expected_list = expected_list end
Public Instance Methods
@api private Returns message with diff(s) appended for provided differ factory and actual value if there are any @param [String] message original failure message @param [Proc] differ @return [String]
# File rspec-expectations/lib/rspec/matchers/multi_matcher_diff.rb, line 47 def message_with_diff(message, differ) diff = diffs(differ) message = "#{message}\n#{diff}" unless diff.empty? message end