Compare commits

..

No commits in common. "rawhide" and "f29" have entirely different histories.

8 changed files with 122 additions and 864 deletions

34
.gitignore vendored
View file

@ -1,2 +1,32 @@
/rspec-mocks-*.gem
/rubygem-rspec-mocks-*-full.tar.gz
/rspec-mocks-2.5.0.gem
/rspec-mocks-2.6.0.rc4.gem
/rspec-mocks-2.6.0.rc6.gem
/rspec-mocks-2.6.0.gem
/rspec-mocks-2.8.0.gem
/rspec-mocks-2.11.3.gem
/rspec-mocks-2.12.1.gem
/rspec-mocks-2.12.2.gem
/rspec-mocks-2.13.0.gem
/rspec-mocks-2.13.1.gem
/rspec-mocks-2.14.3.gem
/rspec-mocks-2.14.4.gem
/rspec-mocks-2.14.5.gem
/rspec-mocks-2.14.6.gem
/rspec-mocks-3.1.3.gem
/rubygem-rspec-mocks-3.1.3-full.tar.gz
/rspec-mocks-3.2.0.gem
/rubygem-rspec-mocks-3.2.0-full.tar.gz
/rspec-mocks-3.2.1.gem
/rubygem-rspec-mocks-3.2.1-full.tar.gz
/rspec-mocks-3.3.2.gem
/rubygem-rspec-mocks-3.3.2-full.tar.gz
/rspec-mocks-3.4.0.gem
/rubygem-rspec-mocks-3.4.0-full.tar.gz
/rspec-mocks-3.4.1.gem
/rubygem-rspec-mocks-3.4.1-full.tar.gz
/rspec-mocks-3.5.0.gem
/rubygem-rspec-mocks-3.5.0-full.tar.gz
/rspec-mocks-3.6.0.gem
/rubygem-rspec-mocks-3.6.0-full.tar.gz
/rspec-mocks-3.7.0.gem
/rubygem-rspec-mocks-3.7.0-full.tar.gz

View file

@ -0,0 +1,66 @@
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

View file

@ -1,429 +0,0 @@
From f8b49348d02d0220e20391665f7418f9212dac02 Mon Sep 17 00:00:00 2001
From: Jon Rowe <hello@jonrowe.co.uk>
Date: Fri, 18 Oct 2024 21:39:26 +0100
Subject: [PATCH] Relax specs for Ruby 3.4 hash formatting
---
.../matching_arguments.feature | 6 +-
.../step_definitions/additional_cli_steps.rb | 7 +-
spec/rspec/mocks/argument_matchers_spec.rb | 14 ++--
spec/rspec/mocks/diffing_spec.rb | 84 ++++++++++++-------
spec/rspec/mocks/double_spec.rb | 9 +-
.../mocks/hash_excluding_matcher_spec.rb | 9 +-
.../mocks/hash_including_matcher_spec.rb | 9 +-
spec/rspec/mocks/matchers/receive_spec.rb | 26 ++++--
.../expected_arg_verification_spec.rb | 11 ++-
9 files changed, 124 insertions(+), 51 deletions(-)
diff --git a/features/setting_constraints/matching_arguments.feature b/features/setting_constraints/matching_arguments.feature
index caea74248..cad5cea4c 100644
--- a/features/setting_constraints/matching_arguments.feature
+++ b/features/setting_constraints/matching_arguments.feature
@@ -73,7 +73,7 @@ Feature: Matching arguments
end
"""
When I run `rspec keyword_example_spec.rb`
- Then it should fail with the following output:
+ Then it should fail with the following output, ignoring hash syntax:
| 2 examples, 1 failure |
| |
| Failure/Error: dbl.foo(bar: "incorrect") |
@@ -100,7 +100,7 @@ Feature: Matching arguments
end
"""
When I run `rspec keyword_example_spec.rb`
- Then it should fail with the following output:
+ Then it should fail with the following output, ignoring hash syntax:
| 1 example, 1 failure |
| |
| Failure/Error: dbl.foo({bar: "also incorrect"}) |
@@ -156,7 +156,7 @@ Feature: Matching arguments
end
"""
When I run `rspec rspec_satisfy_spec.rb`
- Then it should fail with the following output:
+ Then it should fail with the following output, ignoring hash syntax:
| 2 examples, 1 failure |
| |
| Failure/Error: dbl.foo({ :a => { :b => { :c => 3 } } }) |
diff --git a/features/step_definitions/additional_cli_steps.rb b/features/step_definitions/additional_cli_steps.rb
index 77f8c0f30..acf1117e0 100644
--- a/features/step_definitions/additional_cli_steps.rb
+++ b/features/step_definitions/additional_cli_steps.rb
@@ -22,8 +22,13 @@
diffable
end
-Then /^it should fail with the following output:$/ do |table|
+Then /^it should fail with the following output(, ignoring hash syntax)?:$/ do |ignore_hash_syntax, table|
step %q(the exit status should be 1)
lines = table.raw.flatten.reject(&:empty?)
+
+ if ignore_hash_syntax && RUBY_VERSION.to_f > 3.3
+ lines = lines.map { |line| line.gsub(/([^\s])=>/, '\1 => ') }
+ end
+
expect(all_output).to match_table(lines)
end
diff --git a/spec/rspec/mocks/argument_matchers_spec.rb b/spec/rspec/mocks/argument_matchers_spec.rb
index eb101a04c..8f31d1786 100644
--- a/spec/rspec/mocks/argument_matchers_spec.rb
+++ b/spec/rspec/mocks/argument_matchers_spec.rb
@@ -256,7 +256,7 @@ module Mocks
expect(a_double).to receive(:random_call).with(hash_including(:a => 1))
expect {
a_double.random_call(:a => 2)
- }.to fail_including "expected: (hash_including(:a=>1))"
+ }.to fail_including "expected: (hash_including(#{hash_syntax(:a => 1)}))"
end
end
@@ -270,7 +270,7 @@ module Mocks
expect(a_double).to receive(:random_call).with(hash_excluding(:a => 1))
expect {
a_double.random_call(:a => 1)
- }.to fail_including "expected: (hash_not_including(:a=>1))"
+ }.to fail_including "expected: (hash_not_including(#{hash_syntax(:a => 1)}))"
end
end
@@ -431,7 +431,7 @@ def ==(other)
expect(a_double).to receive(:random_call).with(:a => "a", :b => "b")
expect do
a_double.random_call(opts)
- end.to fail_with(/expected: \(\{(:a=>\"a\", :b=>\"b\"|:b=>\"b\", :a=>\"a\")\}\)/)
+ end.to fail_with(/expected: \(\{(:a\s*=>\s*\"a\", :b\s*=>\s*\"b\"|:b\s*=>\s*\"b\", :a\s*=>\s*\"a\")\}\)/)
end
else
it "matches against a hash submitted as a positional argument and received as keyword arguments in Ruby 2.7 or before" do
@@ -445,14 +445,14 @@ def ==(other)
expect(a_double).to receive(:random_call).with(:a => "b", :c => "d")
expect do
a_double.random_call(:a => "b", :c => "e")
- end.to fail_with(/expected: \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\)/)
+ end.to fail_with(/expected: \(\{(:a\s*=>\s*\"b\", :c\s*=>\s*\"d\"|:c\s*=>\s*\"d\", :a\s*=>\s*\"b\")\}\)/)
end
it "fails for a hash w/ wrong keys", :reset => true do
expect(a_double).to receive(:random_call).with(:a => "b", :c => "d")
expect do
a_double.random_call("a" => "b", "c" => "d")
- end.to fail_with(/expected: \(\{(:a=>\"b\", :c=>\"d\"|:c=>\"d\", :a=>\"b\")\}\)/)
+ end.to fail_with(/expected: \(\{(:a\s*=>\s*\"b\", :c\s*=>\s*\"d\"|:c\s*=>\s*\"d\", :a\s*=>\s*\"b\")\}\)/)
end
it "matches a class against itself" do
@@ -502,6 +502,10 @@ def ==(other)
expect { a_double.msg 3 }.to fail_including "expected: (my_thing)"
end
end
+
+ def hash_syntax(hash)
+ hash.inspect.gsub(/\{(.*)\}/, '\1')
+ end
end
end
end
diff --git a/spec/rspec/mocks/diffing_spec.rb b/spec/rspec/mocks/diffing_spec.rb
index e40fa55b6..8be6510da 100644
--- a/spec/rspec/mocks/diffing_spec.rb
+++ b/spec/rspec/mocks/diffing_spec.rb
@@ -100,15 +100,18 @@
if RSpec::Support::RubyFeatures.distincts_kw_args_from_positional_hash?
eval <<-'RUBY', nil, __FILE__, __LINE__ + 1
it "prints a diff when keyword argument were expected but got an option hash (using splat)" do
+ message =
+ "#<Double \"double\"> received :foo with unexpected arguments\n" \
+ " expected: ({:baz=>:quz, :foo=>:bar}) (keyword arguments)\n" \
+ " got: ({:baz=>:quz, :foo=>:bar}) (options hash)"
+
+ message = message.gsub('=>', ' => ') if RUBY_VERSION.to_f > 3.3
+
with_unfulfilled_double do |d|
expect(d).to receive(:foo).with(**expected_hash)
expect {
d.foo(expected_hash)
- }.to fail_with(
- "#<Double \"double\"> received :foo with unexpected arguments\n" \
- " expected: ({:baz=>:quz, :foo=>:bar}) (keyword arguments)\n" \
- " got: ({:baz=>:quz, :foo=>:bar}) (options hash)"
- )
+ }.to fail_with(message)
end
end
RUBY
@@ -117,14 +120,18 @@
it "prints a diff when keyword argument were expected but got an option hash (literal)" do
with_unfulfilled_double do |d|
expect(d).to receive(:foo).with(:positional, keyword: 1)
- expect {
- options = { keyword: 1 }
- d.foo(:positional, options)
- }.to fail_with(
+
+ message =
"#<Double \"double\"> received :foo with unexpected arguments\n" \
" expected: (:positional, {:keyword=>1}) (keyword arguments)\n" \
" got: (:positional, {:keyword=>1}) (options hash)"
- )
+
+ message = message.gsub('=>',' => ') if RUBY_VERSION.to_f > 3.3
+
+ expect {
+ options = { keyword: 1 }
+ d.foo(:positional, options)
+ }.to fail_with(message)
end
end
RUBY
@@ -139,10 +146,7 @@
expect(d).to receive(:foo).with(expected_input, one: 1)
- expect {
- options = { one: 1 }
- d.foo(actual_input, options)
- }.to fail_with(
+ message =
"#<Double \"double\"> received :foo with unexpected arguments\n" \
" expected: (#{expected_input.inspect}, {:one=>1}) (keyword arguments)\n" \
" got: (#{actual_input.inspect}, {:one=>1}) (options hash)\n" \
@@ -150,7 +154,13 @@
"@@ -1 +1 @@\n" \
"-[#{expected_input.inspect}, {:one=>1}]\n" \
"+[#{actual_input.inspect}, {:one=>1}]\n"
- )
+
+ message = message.gsub('=>',' => ') if RUBY_VERSION.to_f > 3.3
+
+ expect {
+ options = { one: 1 }
+ d.foo(actual_input, options)
+ }.to fail_with(message)
end
end
RUBY
@@ -172,28 +182,34 @@
if RSpec::Support::RubyFeatures.distincts_kw_args_from_positional_hash?
eval <<-'RUBY', nil, __FILE__, __LINE__ + 1
it "prints a diff when keyword argument were expected but got an option hash (using splat)" do
- expect(d).to receive(:foo).with(:positional, **expected_hash)
- expect {
- d.foo(:positional, expected_hash)
- }.to fail_with(
+ message =
"#{d.inspect} received :foo with unexpected arguments\n" \
" expected: (:positional, {:baz=>:quz, :foo=>:bar}) (keyword arguments)\n" \
" got: (:positional, {:baz=>:quz, :foo=>:bar}) (options hash)"
- )
+
+ message.gsub!('=>',' => ') if RUBY_VERSION.to_f > 3.3
+
+ expect(d).to receive(:foo).with(:positional, **expected_hash)
+ expect {
+ d.foo(:positional, expected_hash)
+ }.to fail_with(message)
end
RUBY
eval <<-'RUBY', nil, __FILE__, __LINE__ + 1
it "prints a diff when keyword argument were expected but got an option hash (literal)" do
+ message =
+ "#{d.inspect} received :foo with unexpected arguments\n" \
+ " expected: (:positional, {:keyword=>1}) (keyword arguments)\n" \
+ " got: (:positional, {:keyword=>1}) (options hash)"
+
+ message.gsub!('=>',' => ') if RUBY_VERSION.to_f > 3.3
+
expect(d).to receive(:foo).with(:positional, keyword: 1)
expect {
options = { keyword: 1 }
d.foo(:positional, options)
- }.to fail_with(
- "#{d.inspect} received :foo with unexpected arguments\n" \
- " expected: (:positional, {:keyword=>1}) (keyword arguments)\n" \
- " got: (:positional, {:keyword=>1}) (options hash)"
- )
+ }.to fail_with(message)
end
RUBY
@@ -206,10 +222,7 @@
expect(d).to receive(:foo).with(expected_input, one: 1)
- expect {
- options = { one: 1 }
- d.foo(actual_input, options)
- }.to fail_with(
+ message =
"#{d.inspect} received :foo with unexpected arguments\n" \
" expected: (#{expected_input.inspect}, {:one=>1}) (keyword arguments)\n" \
" got: (#{actual_input.inspect}, {:one=>1}) (options hash)\n" \
@@ -217,7 +230,13 @@
"@@ -1 +1 @@\n" \
"-[#{expected_input.inspect}, {:one=>1}]\n" \
"+[#{actual_input.inspect}, {:one=>1}]\n"
- )
+
+ message = message.gsub('=>', ' => ') if RUBY_VERSION.to_f > 3.3
+
+ expect {
+ options = { one: 1 }
+ d.foo(actual_input, options)
+ }.to fail_with(message)
end
RUBY
end
@@ -232,6 +251,11 @@
def hash_regex_inspect(hash)
"\\{(#{hash.map { |key, value| "#{key.inspect}=>#{value.inspect}.*" }.join "|"}){#{hash.size}}\\}"
end
+ elsif RUBY_VERSION.to_f > 3.3
+ # Ruby head / 3.4 is changing the hash syntax inspect, but we use PP when diffing which just spaces out hashrockets
+ def hash_regex_inspect(hash)
+ Regexp.escape("{#{hash.map { |key, value| "#{key.inspect} => #{value.inspect}"}.join(", ")}}")
+ end
else
def hash_regex_inspect(hash)
Regexp.escape(hash.inspect)
diff --git a/spec/rspec/mocks/double_spec.rb b/spec/rspec/mocks/double_spec.rb
index d5dff63b3..ac65c590f 100644
--- a/spec/rspec/mocks/double_spec.rb
+++ b/spec/rspec/mocks/double_spec.rb
@@ -526,10 +526,17 @@ def initialize(amount, units)
if kw_args_supported?
it 'fails when calling yielding method with invalid kw args' do
+ message =
+ if RUBY_VERSION.to_f > 3.3
+ '#<Double "test double"> yielded |{:x => 1, :y => 2}| to block with optional keyword args (:x)'
+ else
+ '#<Double "test double"> yielded |{:x=>1, :y=>2}| to block with optional keyword args (:x)'
+ end
+
expect(@double).to receive(:yield_back).and_yield(:x => 1, :y => 2)
expect {
eval("@double.yield_back { |x: 1| }")
- }.to fail_with '#<Double "test double"> yielded |{:x=>1, :y=>2}| to block with optional keyword args (:x)'
+ }.to fail_with message
end
end
diff --git a/spec/rspec/mocks/hash_excluding_matcher_spec.rb b/spec/rspec/mocks/hash_excluding_matcher_spec.rb
index fc0faed05..3fca99823 100644
--- a/spec/rspec/mocks/hash_excluding_matcher_spec.rb
+++ b/spec/rspec/mocks/hash_excluding_matcher_spec.rb
@@ -4,7 +4,14 @@ module ArgumentMatchers
RSpec.describe HashExcludingMatcher do
it "describes itself properly" do
- expect(HashExcludingMatcher.new(:a => 5).description).to eq "hash_not_including(:a=>5)"
+ message =
+ if RUBY_VERSION.to_f > 3.3
+ "hash_not_including(a: 5)"
+ else
+ "hash_not_including(:a=>5)"
+ end
+
+ expect(HashExcludingMatcher.new(:a => 5).description).to eq message
end
describe "passing" do
diff --git a/spec/rspec/mocks/hash_including_matcher_spec.rb b/spec/rspec/mocks/hash_including_matcher_spec.rb
index ad5e8587a..057aec55d 100644
--- a/spec/rspec/mocks/hash_including_matcher_spec.rb
+++ b/spec/rspec/mocks/hash_including_matcher_spec.rb
@@ -4,7 +4,14 @@ module ArgumentMatchers
RSpec.describe HashIncludingMatcher do
it "describes itself properly" do
- expect(HashIncludingMatcher.new(:a => 1).description).to eq "hash_including(:a=>1)"
+ message =
+ if RUBY_VERSION.to_f > 3.3
+ "hash_including(a: 1)"
+ else
+ "hash_including(:a=>1)"
+ end
+
+ expect(HashIncludingMatcher.new(:a => 1).description).to eq message
end
it "describes passed matchers" do
diff --git a/spec/rspec/mocks/matchers/receive_spec.rb b/spec/rspec/mocks/matchers/receive_spec.rb
index 1b71dd58f..abf266935 100644
--- a/spec/rspec/mocks/matchers/receive_spec.rb
+++ b/spec/rspec/mocks/matchers/receive_spec.rb
@@ -130,7 +130,7 @@ def kw_args_method(a:, b:); end
dbl.kw_args_method(a: 1, b: 2)
end
- if RUBY_VERSION >= '3.0'
+ if RUBY_VERSION.to_f >= 3.0
it "fails to expect to receive hash with keyword args" do
expect {
dbl = instance_double(TestObject)
@@ -138,9 +138,16 @@ def kw_args_method(a:, b:); end
dbl.kw_args_method({a: 1, b: 2})
}.to fail_with do |failure|
reset_all
- expect(failure.message)
- .to include('expected: ({:a=>1, :b=>2}) (keyword arguments)')
- .and include('got: ({:a=>1, :b=>2}) (options hash)')
+
+ if RUBY_VERSION.to_f > 3.3
+ expect(failure.message)
+ .to include('expected: ({:a => 1, :b => 2}) (keyword arguments)')
+ .and include('got: ({:a => 1, :b => 2}) (options hash)')
+ else
+ expect(failure.message)
+ .to include('expected: ({:a=>1, :b=>2}) (keyword arguments)')
+ .and include('got: ({:a=>1, :b=>2}) (options hash)')
+ end
end
end
else
@@ -505,9 +512,14 @@ def receiver.method_missing(*); end # a poor man's stub...
receiver.foo(1, :bar => 2)
receiver.foo(1, :bar => 3)
- expect { verify_all }.to(
- raise_error(/received: 2 times with arguments: \(anything, hash_including\(:bar=>"anything"\)\)$/)
- )
+ message =
+ if RUBY_VERSION.to_f > 3.3
+ /received: 2 times with arguments: \(anything, hash_including\(bar: "anything"\)\)$/
+ else
+ /received: 2 times with arguments: \(anything, hash_including\(:bar=>"anything"\)\)$/
+ end
+
+ expect { verify_all }.to raise_error(message)
end
end
end
diff --git a/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb b/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
index d39995341..1860afa1a 100644
--- a/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
+++ b/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
@@ -130,12 +130,19 @@ module Mocks
dbl.kw_args_method(1, :required_arg => 2, :optional_arg => 3)
end
- if RUBY_VERSION >= "3"
+ if RUBY_VERSION.to_f >= 3.0
it "fails to match against a hash submitted as a positional argument and received as keyword arguments in Ruby 3.0 or later", :reset => true do
+ messages =
+ if RUBY_VERSION.to_f > 3.3
+ ["expected: (1, {:optional_arg => 3, :required_arg => 2}) (keyword arguments)", "got: (1, {:optional_arg => 3, :required_arg => 2}) (options hash)"]
+ else
+ ["expected: (1, {:optional_arg=>3, :required_arg=>2}) (keyword arguments)", "got: (1, {:optional_arg=>3, :required_arg=>2}) (options hash)"]
+ end
+
expect(dbl).to receive(:kw_args_method).with(1, :required_arg => 2, :optional_arg => 3)
expect do
dbl.kw_args_method(1, {:required_arg => 2, :optional_arg => 3})
- end.to fail_with(a_string_including("expected: (1, {:optional_arg=>3, :required_arg=>2}) (keyword arguments)", "got: (1, {:optional_arg=>3, :required_arg=>2}) (options hash)"))
+ end.to fail_with(a_string_including(*messages))
end
else
it "matches against a hash submitted as a positional argument and received as keyword arguments in Ruby 2.7 or before" do

View file

@ -1,190 +0,0 @@
From 9310b4b72e205c6352c4b30015a3b8f3d2fb02e8 Mon Sep 17 00:00:00 2001
From: Jon Rowe <hello@jonrowe.co.uk>
Date: Thu, 26 Dec 2024 11:06:37 +0000
Subject: [PATCH 1/2] Format hashes in new {a: :b} format on Ruby 3.4
---
.../step_definitions/additional_cli_steps.rb | 2 +-
.../rspec/mocks/argument_matchers_spec.rb | 24 ++++++++++++++++---
rspec-mocks/spec/rspec/mocks/diffing_spec.rb | 17 +++++--------
rspec-mocks/spec/rspec/mocks/double_spec.rb | 2 +-
.../spec/rspec/mocks/matchers/receive_spec.rb | 4 ++--
.../expected_arg_verification_spec.rb | 2 +-
.../lib/rspec/support/object_formatter.rb | 2 ++
.../spec/rspec/support/differ_spec.rb | 2 +-
.../rspec/support/object_formatter_spec.rb | 22 +++++++++++++++--
9 files changed, 55 insertions(+), 22 deletions(-)
diff --git a/rspec-mocks/features/step_definitions/additional_cli_steps.rb b/rspec-mocks/features/step_definitions/additional_cli_steps.rb
index acf1117e0..9ccfac5b1 100644
--- a/rspec-mocks/features/step_definitions/additional_cli_steps.rb
+++ b/rspec-mocks/features/step_definitions/additional_cli_steps.rb
@@ -27,7 +27,7 @@
lines = table.raw.flatten.reject(&:empty?)
if ignore_hash_syntax && RUBY_VERSION.to_f > 3.3
- lines = lines.map { |line| line.gsub(/([^\s])=>/, '\1 => ') }
+ lines = lines.map { |line| line.gsub(/:(\w+)=>/, '\1: ') }
end
expect(all_output).to match_table(lines)
diff --git a/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb b/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb
index 8f31d1786..4bffa727d 100644
--- a/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb
+++ b/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb
@@ -431,7 +431,13 @@ def ==(other)
expect(a_double).to receive(:random_call).with(:a => "a", :b => "b")
expect do
a_double.random_call(opts)
- end.to fail_with(/expected: \(\{(:a\s*=>\s*\"a\", :b\s*=>\s*\"b\"|:b\s*=>\s*\"b\", :a\s*=>\s*\"a\")\}\)/)
+ end.to fail_with(
+ if RUBY_VERSION.to_f > 3.3
+ /expected: \(\{a: \"a\", b: \"b\"\}\)/
+ else
+ /expected: \(\{(:a\s*=>\s*\"a\", :b\s*=>\s*\"b\"|:b\s*=>\s*\"b\", :a\s*=>\s*\"a\")\}\)/
+ end
+ )
end
else
it "matches against a hash submitted as a positional argument and received as keyword arguments in Ruby 2.7 or before" do
@@ -445,14 +451,26 @@ def ==(other)
expect(a_double).to receive(:random_call).with(:a => "b", :c => "d")
expect do
a_double.random_call(:a => "b", :c => "e")
- end.to fail_with(/expected: \(\{(:a\s*=>\s*\"b\", :c\s*=>\s*\"d\"|:c\s*=>\s*\"d\", :a\s*=>\s*\"b\")\}\)/)
+ end.to fail_with(
+ if RUBY_VERSION.to_f > 3.3
+ /expected: \(\{a: \"b\", c: \"d\"\}\)/
+ else
+ /expected: \(\{(:a\s*=>\s*\"b\", :c\s*=>\s*\"d\"|:c\s*=>\s*\"d\", :a\s*=>\s*\"b\")\}\)/
+ end
+ )
end
it "fails for a hash w/ wrong keys", :reset => true do
expect(a_double).to receive(:random_call).with(:a => "b", :c => "d")
expect do
a_double.random_call("a" => "b", "c" => "d")
- end.to fail_with(/expected: \(\{(:a\s*=>\s*\"b\", :c\s*=>\s*\"d\"|:c\s*=>\s*\"d\", :a\s*=>\s*\"b\")\}\)/)
+ end.to fail_with(
+ if RUBY_VERSION.to_f > 3.3
+ /expected: \(\{a: \"b\", c: \"d\"\}\)/
+ else
+ /expected: \(\{(:a\s*=>\s*\"b\", :c\s*=>\s*\"d\"|:c\s*=>\s*\"d\", :a\s*=>\s*\"b\")\}\)/
+ end
+ )
end
it "matches a class against itself" do
diff --git a/rspec-mocks/spec/rspec/mocks/diffing_spec.rb b/rspec-mocks/spec/rspec/mocks/diffing_spec.rb
index f071cc1ec..b4492b4e8 100644
--- a/rspec-mocks/spec/rspec/mocks/diffing_spec.rb
+++ b/rspec-mocks/spec/rspec/mocks/diffing_spec.rb
@@ -105,7 +105,7 @@
" expected: ({:baz=>:quz, :foo=>:bar}) (keyword arguments)\n" \
" got: ({:baz=>:quz, :foo=>:bar}) (options hash)"
- message = message.gsub('=>', ' => ') if RUBY_VERSION.to_f > 3.3
+ message = message.gsub(/:(\w+)=>/, '\1: ') if RUBY_VERSION.to_f > 3.3
with_unfulfilled_double do |d|
expect(d).to receive(:foo).with(**expected_hash)
@@ -126,7 +126,7 @@
" expected: (:positional, {:keyword=>1}) (keyword arguments)\n" \
" got: (:positional, {:keyword=>1}) (options hash)"
- message = message.gsub('=>',' => ') if RUBY_VERSION.to_f > 3.3
+ message = message.gsub(/:(\w+)=>/, '\1: ') if RUBY_VERSION.to_f > 3.3
expect {
options = { keyword: 1 }
@@ -155,7 +155,7 @@
"-[#{expected_input.inspect}, {:one=>1}]\n" \
"+[#{actual_input.inspect}, {:one=>1}]\n"
- message = message.gsub('=>',' => ') if RUBY_VERSION.to_f > 3.3
+ message = message.gsub(/:(\w+)=>/, '\1: ') if RUBY_VERSION.to_f > 3.3
expect {
options = { one: 1 }
@@ -187,7 +187,7 @@
" expected: (:positional, {:baz=>:quz, :foo=>:bar}) (keyword arguments)\n" \
" got: (:positional, {:baz=>:quz, :foo=>:bar}) (options hash)"
- message.gsub!('=>',' => ') if RUBY_VERSION.to_f > 3.3
+ message = message.gsub(/:(\w+)=>/, '\1: ') if RUBY_VERSION.to_f > 3.3
expect(d).to receive(:foo).with(:positional, **expected_hash)
expect {
@@ -203,7 +203,7 @@
" expected: (:positional, {:keyword=>1}) (keyword arguments)\n" \
" got: (:positional, {:keyword=>1}) (options hash)"
- message.gsub!('=>',' => ') if RUBY_VERSION.to_f > 3.3
+ message = message.gsub(/:(\w+)=>/, '\1: ') if RUBY_VERSION.to_f > 3.3
expect(d).to receive(:foo).with(:positional, keyword: 1)
expect {
@@ -231,7 +231,7 @@
"-[#{expected_input.inspect}, {:one=>1}]\n" \
"+[#{actual_input.inspect}, {:one=>1}]\n"
- message = message.gsub('=>', ' => ') if RUBY_VERSION.to_f > 3.3
+ message = message.gsub(/:(\w+)=>/, '\1: ') if RUBY_VERSION.to_f > 3.3
expect {
options = { one: 1 }
@@ -251,11 +251,6 @@
def hash_regex_inspect(hash)
"\\{(#{hash.map { |key, value| "#{key.inspect}=>#{value.inspect}.*" }.join "|"}){#{hash.size}}\\}"
end
- elsif RUBY_VERSION.to_f > 3.3
- # Ruby head / 3.4 is changing the hash syntax inspect, but we use PP when diffing which just spaces out hashrockets
- def hash_regex_inspect(hash)
- Regexp.escape("{#{hash.map { |key, value| "#{key.inspect} => #{value.inspect}"}.join(", ")}}")
- end
else
def hash_regex_inspect(hash)
Regexp.escape(hash.inspect)
diff --git a/rspec-mocks/spec/rspec/mocks/double_spec.rb b/rspec-mocks/spec/rspec/mocks/double_spec.rb
index ac65c590f..9738edfa7 100644
--- a/rspec-mocks/spec/rspec/mocks/double_spec.rb
+++ b/rspec-mocks/spec/rspec/mocks/double_spec.rb
@@ -528,7 +528,7 @@ def initialize(amount, units)
it 'fails when calling yielding method with invalid kw args' do
message =
if RUBY_VERSION.to_f > 3.3
- '#<Double "test double"> yielded |{:x => 1, :y => 2}| to block with optional keyword args (:x)'
+ '#<Double "test double"> yielded |{x: 1, y: 2}| to block with optional keyword args (:x)'
else
'#<Double "test double"> yielded |{:x=>1, :y=>2}| to block with optional keyword args (:x)'
end
diff --git a/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb b/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb
index 3e71bd289..307c86a6f 100644
--- a/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb
+++ b/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb
@@ -141,8 +141,8 @@ def kw_args_method(a:, b:); end
if RUBY_VERSION.to_f > 3.3
expect(failure.message)
- .to include('expected: ({:a => 1, :b => 2}) (keyword arguments)')
- .and include('got: ({:a => 1, :b => 2}) (options hash)')
+ .to include('expected: ({a: 1, b: 2}) (keyword arguments)')
+ .and include('got: ({a: 1, b: 2}) (options hash)')
else
expect(failure.message)
.to include('expected: ({:a=>1, :b=>2}) (keyword arguments)')
diff --git a/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb b/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
index a3f3d2034..48646a1e6 100644
--- a/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
+++ b/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
@@ -134,7 +134,7 @@ module Mocks
it "fails to match against a hash submitted as a positional argument and received as keyword arguments in Ruby 3.0 or later", :reset => true do
messages =
if RUBY_VERSION.to_f > 3.3
- ["expected: (1, {:optional_arg => 3, :required_arg => 2}) (keyword arguments)", "got: (1, {:optional_arg => 3, :required_arg => 2}) (options hash)"]
+ ["expected: (1, {optional_arg: 3, required_arg: 2}) (keyword arguments)", "got: (1, {optional_arg: 3, required_arg: 2}) (options hash)"]
else
["expected: (1, {:optional_arg=>3, :required_arg=>2}) (keyword arguments)", "got: (1, {:optional_arg=>3, :required_arg=>2}) (options hash)"]
end

View file

@ -1,35 +0,0 @@
From 939c4799993b7ff7e524fac701ae6490772ca6de Mon Sep 17 00:00:00 2001
From: Jon Rowe <hello@jonrowe.co.uk>
Date: Mon, 1 Dec 2025 14:08:25 +0000
Subject: [PATCH] Skip mock for calls to `:respond_to?` from `Kernel#inspect`
---
rspec-mocks/lib/rspec/mocks/method_double.rb | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/rspec-mocks/lib/rspec/mocks/method_double.rb b/rspec-mocks/lib/rspec/mocks/method_double.rb
index e2edb1e21..3276c49a5 100644
--- a/rspec-mocks/lib/rspec/mocks/method_double.rb
+++ b/rspec-mocks/lib/rspec/mocks/method_double.rb
@@ -68,8 +68,19 @@ def define_proxy_method
save_original_implementation_callable!
definition_target.class_exec(self, method_name, @original_visibility || visibility) do |method_double, method_name, visibility|
- define_method(method_name) do |*args, &block|
- method_double.proxy_method_invoked(self, *args, &block)
+ if RUBY_VERSION.to_f > 3 && method_name == :respond_to?
+ define_method(method_name) do |*args, &block|
+ # This is a work around for a respond_to? check within kernel_inspect
+ if caller_locations[0].label == "Kernel#inspect"
+ super(*args, &block)
+ else
+ method_double.proxy_method_invoked(self, *args, &block)
+ end
+ end
+ else
+ define_method(method_name) do |*args, &block|
+ method_double.proxy_method_invoked(self, *args, &block)
+ end
end
# This can't be `if respond_to?(:ruby2_keywords, true)`,
# see https://github.com/rspec/rspec-mocks/pull/1385#issuecomment-755340298

View file

@ -14,9 +14,10 @@ CURRDIR=$(pwd)
TMPDIRPATH=$(mktemp -d /var/tmp/rspec-tar-XXXXXX)
pushd $TMPDIRPATH
git clone https://github.com/rspec/rspec.git
pushd rspec
git reset --hard $1-v$2
git clone https://github.com/rspec/$1.git
pushd $1
git reset --hard v$2
popd
ln -sf $1 $1-$2
tar czf ${CURRDIR}/rubygem-$1-$2-full.tar.gz $1-$2/./

View file

@ -1,43 +1,37 @@
%global majorver 3.13.7
%global majorver 3.7.0
#%%global preminorver .rc6
%global rpmminorver .%(echo %preminorver | sed -e 's|^\\.\\.*||')
%global fullver %{majorver}%{?preminorver}
%global baserelease 2
%global fedorarel 3
%global gem_name rspec-mocks
%bcond_with bootstrap
%global need_bootstrap_set 0
%undefine __brp_mangle_shebangs
Summary: RSpec's 'test double' framework (mocks and stubs)
Name: rubygem-%{gem_name}
Version: %{majorver}
Release: %{?preminorver:0.}%{baserelease}%{?preminorver:%{rpmminorver}}%{?dist}
Release: %{?preminorver:0.}%{fedorarel}%{?preminorver:%{rpmminorver}}%{?dist}.1
# SPDX confirmed
Group: Development/Languages
License: MIT
URL: https://rspec.info
URL: http://github.com/rspec/rspec-mocks
Source0: https://rubygems.org/gems/%{gem_name}-%{fullver}.gem
# %%{SOURCE2} %%{name} %%{version}
# %%{SOURCE2} %%{name} %%{version}
Source1: rubygem-%{gem_name}-%{version}-full.tar.gz
Source2: rspec-related-create-full-tarball.sh
# https://github.com/rspec/rspec/pull/282/commits/939c4799993b7ff7e524fac701ae6490772ca6de
# Skip mock for ruby4_0 Kernel#inspect
Patch0: rspec-mocks-pr282-skip-mock-for-ruby4_0-inspect.patch
# https://github.com/rspec/rspec-mocks/pull/1196
# https://github.com/rspec/rspec-mocks/commit/1d2f2404a17c3a76742379bb0c57d133df8e7371.patch
Patch1: rspec-mocks-3.7.0-test-ruby-25.patch
#BuildRequires: ruby(release)
BuildRequires: rubygems-devel
%if %{without bootstrap}
# rspec
%if 0%{?need_bootstrap_set} < 1
BuildRequires: rubygem(rspec)
BuildRequires: rubygem(rake)
%if %{undefined rhel}
# cucumber
BuildRequires: rubygem(aruba)
BuildRequires: rubygem(cucumber)
BuildRequires: rubygem(minitest)
%endif
BuildRequires: rubygem(thread_order)
BuildRequires: git
%endif
BuildArch: noarch
@ -48,6 +42,7 @@ for method stubs, fakes, and message expectations.
%package doc
Summary: Documentation for %{name}
Group: Documentation
Requires: %{name} = %{version}-%{release}
%description doc
@ -58,11 +53,7 @@ This package contains documentation for %{name}.
gem unpack %{SOURCE0}
%setup -q -D -T -n %{gem_name}-%{version} -b 1
%patch -P0 -p2
# Cucumber 7 syntax change
sed -i cucumber.yml -e "s|~@wip|not @wip|"
sed -i features/support/disallow_certain_apis.rb -e "s|~@allow-old-syntax|not @allow-old-syntax|"
%patch1 -p1
gem specification %{SOURCE0} -l --ruby > %{gem_name}.gemspec
@ -78,33 +69,12 @@ cp -a .%{gem_dir}/* \
# cleanups
rm -f %{buildroot}%{gem_instdir}/{.document,.yardopts}
%if 0%{?need_bootstrap_set} < 1
%check
%if %{with bootstrap}
# Don't do actual check
exit 0
%endif
%if %{defined rhel}
# avoid aruba dep on RHEL, but tests fail if files are removed entirely
echo -n > spec/integration/rails_support_spec.rb
echo -n > spec/support/aruba.rb
%else
# Don't call bundler
sed -i spec/integration/rails_support_spec.rb \
-e 's|bundle exec rspec|rspec|'
%endif
# library_wide_checks.rb needs UTF-8
LANG=C.UTF-8
export RUBYLIB=$(pwd)/lib
rspec spec/
%if 0%{?rhel}
# Don't do cucumber test
exit 0
LANG=en_US.utf8
ruby -rrubygems -Ilib/ -S rspec spec/
%endif
export CUCUMBER_PUBLISH_QUIET=true
cucumber
%files
%dir %{gem_instdir}
@ -122,161 +92,6 @@ cucumber
%{gem_docdir}
%changelog
* Tue Dec 02 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.7-2
- Backport upstream patch to skip mock for Kernel#inspect on ruby4_0
* Mon Nov 24 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.7-1
- 3.13.7
* Fri Oct 17 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.6-1
- 3.13.6
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.13.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu May 29 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.5-1
- 3.13.5
* Thu May 15 2025 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.4-1
- 3.13.4
* Sat Jan 18 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.13.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sun Dec 29 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.2-3
- Coordinate with rspec-support change wrt ruby34 hash inspect support
* Wed Nov 06 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.2-2
- Backport upstream patch to support ruby34 formatting
* Thu Oct 03 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.2-1
- 3.13.2
* Fri Jul 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.13.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu May 09 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.1-1
- 3.13.1
* Thu Apr 18 2024 Jun Aruga <jaruga@redhat.com> - 3.13.0-2
- Remove unused thread_order build dependency
* Fri Feb 09 2024 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.13.0-1
- 3.13.0
* Fri Jan 26 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sun Jul 16 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.6-1
- 3.12.6
* Sat Apr 1 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.5-1
- 3.12.5
* Tue Mar 14 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.4-1
- 3.12.4
* Thu Mar 09 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 3.12.3-2
- Disable unwanted dependencies in RHEL builds
* Thu Feb 16 2023 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.3-1
- 3.12.3
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.12.0-3.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Dec 2 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.0-3
- Backport upstream reviewing patch for ruby32 ruby2_keywords treatment change
* Thu Nov 3 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.0-2
- On Fedora 37, remove "Display keyword hashes" feature for now
(On Fedora 38, this is effective)
* Thu Oct 27 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.12.0-1
- 3.12.0
* Wed Oct 26 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.11.2-1
- 3.11.2
* Mon Oct 3 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.11.1-2
- Backport upstream patch for ruby32 wrt method reference changes
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.11.1-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Apr 7 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.11.1-1
- 3.11.1
* Thu Feb 10 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.11.0-1
- 3.11.0
* Sun Jan 30 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.3-1
- 3.10.3
* Sun Jan 30 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.2-3
- BR: rubygem(rake) for check
* Thu Jan 20 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.2-2
- Execute cucumber test
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.10.2-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Feb 1 2021 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.2-1
- 3.10.2
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.10.1-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Dec 29 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.1-1
- 3.10.1
* Fri Dec 11 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.0-1
- Enable tests again
* Fri Dec 11 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.10.0-0.1
- 3.10.0
- Once disable test for bootstrap
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.1-1.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.9.1-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 2 2020 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.9.1-1
- 3.9.1
* Tue Dec 10 2019 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.9.0-2
- Enable tests again
* Tue Dec 10 2019 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.9.0-0.1
- 3.9.0
- Once disable test for bootstrap
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.1-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jun 21 2019 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.8.1-1
- 3.8.1
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.8.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Dec 13 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.8.0-1
- Enable tests again
* Wed Dec 12 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.8.0-0.1
- 3.8.0
- Once disable test for bootstrap
* Sun Nov 18 2018 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 3.7.0-3.2
- Use C.UTF-8 locale
See https://fedoraproject.org/wiki/Changes/Remove_glibc-langpacks-all_from_buildroot
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.0-3.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

View file

@ -1,2 +1,2 @@
SHA512 (rspec-mocks-3.13.7.gem) = fa30824f1d7ab82e2c0d1cde1f076cb84b9a9e1e9e7292e33bcfda934468a50f2b59a1dc539137be14ad5b86465ed6fa12c32af2e3a79992c3ce5d278072861c
SHA512 (rubygem-rspec-mocks-3.13.7-full.tar.gz) = 7666b07e6b9806e36d53ede810c6efc0ceb57bc554c96e0fdf44efbfd9dd027a8e999ce942d20bf46f93f93bfae1a88c7ffd0bfbf2cdf08601093a98218a059a
SHA512 (rspec-mocks-3.7.0.gem) = a1bd5992528adca3c9021fbc7afd9bfd43707e13c5f54879c9b603376c69fd23389b0c503912b76e10f42ed49b8ba23656220cc75869cc63bd5920efca667678
SHA512 (rubygem-rspec-mocks-3.7.0-full.tar.gz) = adb947206ae5ba5154a151f794cc04cf6c901543a53998b78d7ba27848261b2b709322f46e2180572de7c5f5a3e34503eca8bd457e874c237f7fd18247ff7cda