rubygem-rspec-mocks/rspec-mocks-3.7.0-test-ruby-25.patch

67 lines
2.6 KiB
Diff

From 871eb31e3bfe50705ca57e754771aa1e0164f12d Mon Sep 17 00:00:00 2001
From: Myron Marston <myron.marston@gmail.com>
Date: Sat, 30 Dec 2017 17:45:43 -0800
Subject: [PATCH 1/2] Skip spec that does not apply to Ruby 2.5.
Ruby 2.5 has removed the ability to access top-level constants
via a confusing nested form (e.g. `MyClass::Hash`), so we no
longer need this spec there.
For #1192.
---
spec/rspec/mocks/mutate_const_spec.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/spec/rspec/mocks/mutate_const_spec.rb b/spec/rspec/mocks/mutate_const_spec.rb
index fe8d4128..9d80dd73 100644
--- a/spec/rspec/mocks/mutate_const_spec.rb
+++ b/spec/rspec/mocks/mutate_const_spec.rb
@@ -170,7 +170,7 @@ def change_const_value_to(value)
expect(::Hash).to equal(top_level_hash)
end
- it 'does not affect the ability to access the top-level constant from nested contexts', :silence_warnings do
+ it 'does not affect the ability to access the top-level constant from nested contexts', :silence_warnings, :if => RUBY_VERSION < '2.5' do
top_level_hash = ::Hash
hide_const("TestClass::Hash")
From 783923d6879a2f9df9fee8ef24cecca6ac21136e Mon Sep 17 00:00:00 2001
From: Myron Marston <myron.marston@gmail.com>
Date: Sat, 30 Dec 2017 23:35:27 -0800
Subject: [PATCH 2/2] Make spec less brittle.
On Ruby 2.5, this spec failed, apparently due to the fact that
Method equality has changed on 2.5 slightly. The method instances
have always been different but 2.4 and before considered them
equivalent. Instead, we can show that the two method objects
_behave_ the same, which is what we really care about.
Fixes #1192.
---
spec/rspec/mocks/and_wrap_original_spec.rb | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/spec/rspec/mocks/and_wrap_original_spec.rb b/spec/rspec/mocks/and_wrap_original_spec.rb
index df9cae46..2d4d0a8b 100644
--- a/spec/rspec/mocks/and_wrap_original_spec.rb
+++ b/spec/rspec/mocks/and_wrap_original_spec.rb
@@ -26,12 +26,13 @@ def results
}.to raise_error NameError
end
- it "passes in the original method" do
- value = nil
+ it "passes along the original method" do
+ passed_method = nil
original_method = instance.method(:results)
- allow_it.to receive(:results).and_wrap_original { |m| value = m }
+ allow_it.to receive(:results).and_wrap_original { |m| passed_method = m }
instance.results
- expect(value).to eq original_method
+
+ expect(passed_method.call).to eq(original_method.call)
end
it "passes along the message arguments" do