Compare commits
No commits in common. "c10s" and "c8" have entirely different histories.
4
.gitignore
vendored
4
.gitignore
vendored
@ -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
|
||||||
|
2
.rubygem-rspec-mocks.metadata
Normal file
2
.rubygem-rspec-mocks.metadata
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ba57acddaf6cea7c70250fef45a8727ecec1961e SOURCES/rspec-mocks-3.7.0.gem
|
||||||
|
85feb66ca146e970358aa1cf9a521ab724d70d81 SOURCES/rubygem-rspec-mocks-3.7.0-full.tar.gz
|
66
SOURCES/rspec-mocks-3.7.0-test-ruby-25.patch
Normal file
66
SOURCES/rspec-mocks-3.7.0-test-ruby-25.patch
Normal 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
|
@ -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
|
@ -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
|
|
@ -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
|
|
2
sources
2
sources
@ -1,2 +0,0 @@
|
|||||||
SHA512 (rspec-mocks-3.13.0.gem) = 098aae28f94124071047602e41dc76a8941a5625ea21c554c040aea9973ea285928acadf42cbf361753b84d2d5a21166da6589cf98cc0a2d3edcf0a1280df1d6
|
|
||||||
SHA512 (rubygem-rspec-mocks-3.13.0-full.tar.gz) = cb92e9305a0f2361eaf9dd09f18dd3c7c771b83ec44a959ee613205cfe67214dcf1b26020009d6c4141b3f0de9c720d8e1b79cebf117b51d563c26a95a17dd0c
|
|
Loading…
Reference in New Issue
Block a user