diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-07-05 17:48:00 +0200 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-07-05 17:48:00 +0200 |
commit | f4c156a971ca08c6bc5c644b9ac64889d3784ba4 (patch) | |
tree | a51b7c12a801724953e2c4571e85000d14360803 | |
parent | b0883924ee284d2d2f6e8848ac2994085c95035a (diff) | |
download | bundler-f4c156a971ca08c6bc5c644b9ac64889d3784ba4.tar.gz |
Add a be_sorted matcher
-rw-r--r-- | spec/support/matchers.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/spec/support/matchers.rb b/spec/support/matchers.rb index e91f04fb29..7316e43684 100644 --- a/spec/support/matchers.rb +++ b/spec/support/matchers.rb @@ -113,6 +113,20 @@ module Spec end end + RSpec::Matchers.define :be_sorted do + diffable + attr_reader :expected + match do |actual| + expected = block_arg ? actual.sort_by(&block_arg) : actual.sort + actual.==(expected).tap do + # HACK: since rspec won't show a diff when everything is a string + differ = RSpec::Support::Differ.new + @actual = differ.send(:object_to_string, actual) + @expected = differ.send(:object_to_string, expected) + end + end + end + define_compound_matcher :read_as, [exist] do |file_contents| diffable |