Compare commits

...

No commits in common. 'c9' and 'i10cs' have entirely different histories.
c9 ... i10cs

4
.gitignore vendored

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

@ -1,2 +1,2 @@
6820ddf5448ca6116567759fabb85d0b634e161b SOURCES/rspec-mocks-3.10.2.gem
faabfc4bcef0591f2e2ed8c47b2d08e0ca0a2794 SOURCES/rubygem-rspec-mocks-3.10.2-full.tar.gz
471d4be6dec88144560a8dec719b2d0cb60f3224 SOURCES/rspec-mocks-3.13.0.gem
368810649ceb10025ac759d77f8afdad14ecea35 SOURCES/rubygem-rspec-mocks-3.13.0-full.tar.gz

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

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

@ -1,33 +1,47 @@
%global majorver 3.10.2
%global majorver 3.13.0
#%%global preminorver .rc6
%global rpmminorver .%(echo %preminorver | sed -e 's|^\\.\\.*||')
%global fullver %{majorver}%{?preminorver}
%global fedorarel 1
%global baserelease 3
%global gem_name rspec-mocks
%global need_bootstrap_set 0
%bcond_with bootstrap
%undefine __brp_mangle_shebangs
Summary: RSpec's 'test double' framework (mocks and stubs)
Name: rubygem-%{gem_name}
Version: %{majorver}
Release: %{?preminorver:0.}%{fedorarel}%{?preminorver:%{rpmminorver}}%{?dist}.2
Release: %{?preminorver:0.}%{baserelease}%{?preminorver:%{rpmminorver}}%{?dist}
# SPDX confirmed
License: MIT
URL: http://github.com/rspec/rspec-mocks
Source0: https://rubygems.org/gems/%{gem_name}-%{fullver}.gem
# %%{SOURCE2} %%{name} %%{version}
Source1: rubygem-%{gem_name}-%{version}-full.tar.gz
Source2: rspec-related-create-full-tarball.sh
# https://github.com/rspec/rspec-mocks/commit/e931e818b577172b89fb4583fc336fbcd25df36b
# The above is in 3.12.x branch, not in 3.11.x branch
Patch1: rubygem-rspec-mocks-3.12.0-display_keyword_hashes.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
%if 0%{?need_bootstrap_set} < 1
%if %{without bootstrap}
# rspec
BuildRequires: rubygem(rspec)
BuildRequires: rubygem(thread_order)
BuildRequires: rubygem(rake)
%if %{undefined rhel}
# cucumber
BuildRequires: rubygem(aruba)
BuildRequires: rubygem(cucumber)
BuildRequires: rubygem(minitest)
%endif
BuildRequires: git
%endif
BuildArch: noarch
@ -48,6 +62,15 @@ This package contains documentation for %{name}.
gem unpack %{SOURCE0}
%setup -q -D -T -n %{gem_name}-%{version} -b 1
%if 0%{?fedora} && 0%{?fedora} <= 37
# 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
@ -63,12 +86,33 @@ 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
ruby -rrubygems -Ilib/ -S rspec spec/
export RUBYLIB=$(pwd)/lib
rspec spec/
%if 0%{?rhel}
# Don't do cucumber test
exit 0
%endif
export CUCUMBER_PUBLISH_QUIET=true
cucumber
%files
%dir %{gem_instdir}
@ -86,12 +130,79 @@ ruby -rrubygems -Ilib/ -S rspec spec/
%{gem_docdir}
%changelog
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 3.10.2-1.2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 3.13.0-3
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 3.13.0-2
- Rebuilt for MSVSphere 10
* 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 Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.10.2-1.1
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* 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

Loading…
Cancel
Save