Compare commits

...

No commits in common. "c10s" and "c8" have entirely different histories.
c10s ... c8

8 changed files with 89 additions and 304 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
/rspec-mocks-*.gem SOURCES/rspec-mocks-3.7.0.gem
/rubygem-rspec-mocks-*-full.tar.gz SOURCES/rubygem-rspec-mocks-3.7.0-full.tar.gz

View File

@ -0,0 +1,2 @@
ba57acddaf6cea7c70250fef45a8727ecec1961e SOURCES/rspec-mocks-3.7.0.gem
85feb66ca146e970358aa1cf9a521ab724d70d81 SOURCES/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,47 +1,38 @@
%global majorver 3.13.0 %global majorver 3.7.0
#%%global preminorver .rc6 #%%global preminorver .rc6
%global rpmminorver .%(echo %preminorver | sed -e 's|^\\.\\.*||') %global rpmminorver .%(echo %preminorver | sed -e 's|^\\.\\.*||')
%global fullver %{majorver}%{?preminorver} %global fullver %{majorver}%{?preminorver}
%global baserelease 3 %global fedorarel 4
%global gem_name rspec-mocks %global gem_name rspec-mocks
%bcond_with bootstrap %global need_bootstrap_set 0
%undefine __brp_mangle_shebangs %undefine __brp_mangle_shebangs
Summary: RSpec's 'test double' framework (mocks and stubs) Summary: RSpec's 'test double' framework (mocks and stubs)
Name: rubygem-%{gem_name} Name: rubygem-%{gem_name}
Version: %{majorver} Version: %{majorver}
Release: %{?preminorver:0.}%{baserelease}%{?preminorver:%{rpmminorver}}%{?dist} Release: %{?preminorver:0.}%{fedorarel}%{?preminorver:%{rpmminorver}}%{?dist}
# SPDX confirmed Group: Development/Languages
License: MIT License: MIT
URL: http://github.com/rspec/rspec-mocks URL: http://github.com/rspec/rspec-mocks
Source0: https://rubygems.org/gems/%{gem_name}-%{fullver}.gem Source0: https://rubygems.org/gems/%{gem_name}-%{fullver}.gem
# %%{SOURCE2} %%{name} %%{version} # %%{SOURCE2} %%{name} %%{version}
Source1: rubygem-%{gem_name}-%{version}-full.tar.gz Source1: rubygem-%{gem_name}-%{version}-full.tar.gz
Source2: rspec-related-create-full-tarball.sh Source2: rspec-related-create-full-tarball.sh
# https://github.com/rspec/rspec-mocks/commit/e931e818b577172b89fb4583fc336fbcd25df36b # https://github.com/rspec/rspec-mocks/pull/1196
# The above is in 3.12.x branch, not in 3.11.x branch # https://github.com/rspec/rspec-mocks/commit/1d2f2404a17c3a76742379bb0c57d133df8e7371.patch
Patch1: rubygem-rspec-mocks-3.12.0-display_keyword_hashes.patch Patch1: rspec-mocks-3.7.0-test-ruby-25.patch
# ... and related to the above, and commit 66250dc1819f9435e5f584064067e7f05a9afe72
Patch2: rubygem-rspec-mocks-3.12.0-display_keyword_hashes-additional.patch
# https://github.com/rspec/rspec-mocks/pull/1502
#BuildRequires: ruby(release)
BuildRequires: rubygems-devel BuildRequires: rubygems-devel
%if %{without bootstrap} %if 0%{?need_bootstrap_set} < 1
# rspec
BuildRequires: rubygem(rspec) BuildRequires: rubygem(rspec)
BuildRequires: rubygem(thread_order)
BuildRequires: rubygem(rake) BuildRequires: rubygem(rake)
%if %{undefined rhel} BuildRequires: rubygem(thread_order)
# cucumber
BuildRequires: rubygem(aruba)
BuildRequires: rubygem(cucumber)
BuildRequires: rubygem(minitest)
%endif
BuildRequires: git BuildRequires: git
%endif %endif
BuildArch: noarch BuildArch: noarch
@ -52,6 +43,7 @@ for method stubs, fakes, and message expectations.
%package doc %package doc
Summary: Documentation for %{name} Summary: Documentation for %{name}
Group: Documentation
Requires: %{name} = %{version}-%{release} Requires: %{name} = %{version}-%{release}
%description doc %description doc
@ -62,15 +54,7 @@ This package contains documentation for %{name}.
gem unpack %{SOURCE0} gem unpack %{SOURCE0}
%setup -q -D -T -n %{gem_name}-%{version} -b 1 %setup -q -D -T -n %{gem_name}-%{version} -b 1
%if 0%{?fedora} && 0%{?fedora} <= 37 %patch1 -p1
# Revert "display_keyword_hashes" for now on Fedora 37
%patch1 -p1 -R
%patch2 -p1 -R
%endif
# 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|"
gem specification %{SOURCE0} -l --ruby > %{gem_name}.gemspec gem specification %{SOURCE0} -l --ruby > %{gem_name}.gemspec
@ -86,33 +70,12 @@ cp -a .%{gem_dir}/* \
# cleanups # cleanups
rm -f %{buildroot}%{gem_instdir}/{.document,.yardopts} rm -f %{buildroot}%{gem_instdir}/{.document,.yardopts}
%if 0%{?need_bootstrap_set} < 1
%check %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 # library_wide_checks.rb needs UTF-8
LANG=C.UTF-8 LANG=en_US.utf8
export RUBYLIB=$(pwd)/lib ruby -rrubygems -Ilib/ -S rspec spec/
rspec spec/
%if 0%{?rhel}
# Don't do cucumber test
exit 0
%endif %endif
export CUCUMBER_PUBLISH_QUIET=true
cucumber
%files %files
%dir %{gem_instdir} %dir %{gem_instdir}
@ -130,131 +93,8 @@ cucumber
%{gem_docdir} %{gem_docdir}
%changelog %changelog
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 3.13.0-3 * Thu Jul 12 2018 Jun Aruga <jaruga@redhat.com> - 3.7.0-4
- Bump release for October 2024 mass rebuild: - Fix FTBFS by adding build dependency for RHEL.
Resolves: RHEL-64018
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 3.13.0-2
- Bump release for June 2024 mass rebuild
* 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
* Wed Feb 14 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.7.1-3 * Wed Feb 14 2018 Mamoru TASAKA <mtasaka@fedoraproject.org> - 3.7.1-3
- Backport patch to fix test failure with ruby 2.5 - Backport patch to fix test failure with ruby 2.5

View File

@ -1,12 +0,0 @@
diff -urp -x .git rspec-mocks-3.11.2/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb rspec-mocks-3.12.0/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb
--- rspec-mocks-3.11.2/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb 2022-10-26 16:39:18.000000000 +0900
+++ rspec-mocks-3.12.0/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb 2022-10-27 14:34:37.000000000 +0900
@@ -135,7 +135,7 @@ module RSpec
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})", "got: (1, {:optional_arg=>3, :required_arg=>2})"))
+ 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
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,109 +0,0 @@
From e931e818b577172b89fb4583fc336fbcd25df36b Mon Sep 17 00:00:00 2001
From: Jean Boussier <jean.boussier@gmail.com>
Date: Fri, 18 Feb 2022 11:19:47 +0100
Subject: [PATCH] Display keyword hashes in in expectation error messages
Ref: https://github.com/vcr/vcr/pull/925
Ref: https://github.com/rspec/rspec-mocks/pull/1394
I spent quite a lot of time figuring this error:
```
2) VCR.turned_on passes options through to .turn_off!
Failure/Error: turn_off!(options)
VCR received :turn_off! with unexpected arguments
expected: ({:ignore_cassettes=>true})
got: ({:ignore_cassettes=>true})
# ./lib/vcr.rb:317:in `turned_on'
# ./spec/lib/vcr_spec.rb:367:in `block (3 levels) in <top (required)>'
```
I quickly suspected it was a keyword argument issue, but it's far from
obvious to everyone, and even when you are familair with the issue
it doesn't tell you what was expected and what was received.
I doubt the way I implemented this is ok, but I think it's worth
opening the discussion
```
2) VCR.turned_on passes options through to .turn_off!
Failure/Error: turn_off!(options)
VCR received :turn_off! with unexpected arguments
expected: ({:ignore_cassettes=>true}) (keyword arguments)
got: ({:ignore_cassettes=>true}) (options hash)
# ./lib/vcr.rb:317:in `turned_on'
# ./spec/lib/vcr_spec.rb:367:in `block (3 levels) in <top (required)>'
```
---
lib/rspec/mocks/error_generator.rb | 11 ++++++++++
spec/rspec/mocks/diffing_spec.rb | 33 ++++++++++++++++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/lib/rspec/mocks/error_generator.rb b/lib/rspec/mocks/error_generator.rb
index 9bf0984f3..42ff35283 100644
--- a/lib/rspec/mocks/error_generator.rb
+++ b/lib/rspec/mocks/error_generator.rb
@@ -268,6 +268,17 @@ def unexpected_arguments_message(expected_args_string, actual_args_string)
def error_message(expectation, args_for_multiple_calls)
expected_args = format_args(expectation.expected_args)
actual_args = format_received_args(args_for_multiple_calls)
+
+ if RSpec::Support::RubyFeatures.distincts_kw_args_from_positional_hash? && expected_args == actual_args
+ expected_hash = expectation.expected_args.last
+ actual_hash = args_for_multiple_calls.last.last
+ if Hash === expected_hash && Hash === actual_hash &&
+ (Hash.ruby2_keywords_hash?(expected_hash) != Hash.ruby2_keywords_hash?(actual_hash))
+ actual_args += Hash.ruby2_keywords_hash?(actual_hash) ? " (keyword arguments)" : " (options hash)"
+ expected_args += Hash.ruby2_keywords_hash?(expected_hash) ? " (keyword arguments)" : " (options hash)"
+ end
+ end
+
message = default_error_message(expectation, expected_args, actual_args)
if args_for_multiple_calls.one?
diff --git a/spec/rspec/mocks/diffing_spec.rb b/spec/rspec/mocks/diffing_spec.rb
index 3b1f91edf..e17aabcd3 100644
--- a/spec/rspec/mocks/diffing_spec.rb
+++ b/spec/rspec/mocks/diffing_spec.rb
@@ -83,6 +83,39 @@
end
end
+ if RSpec::Support::RubyFeatures.distincts_kw_args_from_positional_hash?
+ eval <<-'RUBY', nil, __FILE__, __LINE__ + 1
+ it "print a diff when keyword argument were expected but got an option hash (using splat)" do
+ 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)"
+ )
+ end
+ end
+ RUBY
+
+ eval <<-'RUBY', nil, __FILE__, __LINE__ + 1
+ it "print 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(
+ "#<Double \"double\"> received :foo with unexpected arguments\n" \
+ " expected: (:positional, {:keyword=>1}) (keyword arguments)\n" \
+ " got: (:positional, {:keyword=>1}) (options hash)"
+ )
+ end
+ end
+ RUBY
+ end
+
if RUBY_VERSION.to_f < 1.9
# Ruby 1.8 hashes are not ordered, but `#inspect` on a particular unchanged
# hash instance should return consistent output. However, on Travis that does

View File

@ -1,2 +0,0 @@
SHA512 (rspec-mocks-3.13.0.gem) = 098aae28f94124071047602e41dc76a8941a5625ea21c554c040aea9973ea285928acadf42cbf361753b84d2d5a21166da6589cf98cc0a2d3edcf0a1280df1d6
SHA512 (rubygem-rspec-mocks-3.13.0-full.tar.gz) = cb92e9305a0f2361eaf9dd09f18dd3c7c771b83ec44a959ee613205cfe67214dcf1b26020009d6c4141b3f0de9c720d8e1b79cebf117b51d563c26a95a17dd0c