diff --git a/rubygem-activesupport-7.0.2.3-Fix-tests-for-minitest-5.16.patch b/rubygem-activesupport-7.0.2.3-Fix-tests-for-minitest-5.16.patch new file mode 100644 index 0000000..4f325b0 --- /dev/null +++ b/rubygem-activesupport-7.0.2.3-Fix-tests-for-minitest-5.16.patch @@ -0,0 +1,72 @@ +From 9766eb4a833c26c64012230b96dd1157ebb8e8a2 Mon Sep 17 00:00:00 2001 +From: eileencodes +Date: Wed, 15 Jun 2022 12:44:11 -0400 +Subject: [PATCH] Fix tests for minitest 5.16 + +In minitest/minitest@6e06ac9 minitest changed such that it now accepts +`kwargs` instead of requiring kwargs to be shoved into the args array. +This is a good change but required some updates to our test code to get +the new version of minitest passing. + +Changes are as follows: + +1) Lock minitest to 5.15 for Ruby 2.7. We don't love this change but +it's pretty difficult to get 2.7 and 3.0 to play nicely together with +the new kwargs changes. Dropping 2.7 support isn't an option right +now for Rails. This is safe because all of the code changes here are +internal methods to Rails like assert_called_with. Applications +shouldn't be consuming them as they are no-doc'd. +2) Update the `assert_called_with` method to take any kwargs but also +the returns kwarg. +3) Update callers of `assert_called_with` to move the kwargs outside the +args array. +4) Update the message from marshaled exceptions. In 5.16 the exception +message is "result not reported" instead of "Wrapped undumpable +exception". + +Co-authored-by: Matthew Draper +--- + .../testing/method_call_assertions.rb | 22 +++- + 1 file changed, 20 insertions(+), 2 deletions(-) + +diff --git a/activesupport/lib/active_support/testing/method_call_assertions.rb b/activesupport/lib/active_support/testing/method_call_assertions.rb +index 72451faaa8cc4..f146eefce0354 100644 +--- a/activesupport/lib/active_support/testing/method_call_assertions.rb ++++ b/activesupport/lib/active_support/testing/method_call_assertions.rb +@@ -17,9 +17,9 @@ def assert_called(object, method_name, message = nil, times: 1, returns: nil, &b + assert_equal times, times_called, error + end + +- def assert_called_with(object, method_name, args, returns: nil, &block) ++ def assert_called_with(object, method_name, args, returns: false, **kwargs, &block) + mock = Minitest::Mock.new +- mock.expect(:call, returns, args) ++ expect_called_with(mock, args, returns: returns, **kwargs) + + object.stub(method_name, mock, &block) + +@@ -30,6 +30,24 @@ def assert_not_called(object, method_name, message = nil, &block) + assert_called(object, method_name, message, times: 0, &block) + end + ++ #-- ++ # This method is a temporary wrapper for mock.expect as part of ++ # the Minitest 5.16 / Ruby 3.0 kwargs transition. It can go away ++ # when we drop support for Ruby 2.7. ++ if Minitest::Mock.instance_method(:expect).parameters.map(&:first).include?(:keyrest) ++ def expect_called_with(mock, args, returns: false, **kwargs) ++ mock.expect(:call, returns, args, **kwargs) ++ end ++ else ++ def expect_called_with(mock, args, returns: false, **kwargs) ++ if !kwargs.empty? ++ mock.expect(:call, returns, [*args, kwargs]) ++ else ++ mock.expect(:call, returns, args) ++ end ++ end ++ end ++ + def assert_called_on_instance_of(klass, method_name, message = nil, times: 1, returns: nil) + times_called = 0 + klass.define_method("stubbed_#{method_name}") do |*| diff --git a/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with-test.patch b/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with-test.patch new file mode 100644 index 0000000..7baf418 --- /dev/null +++ b/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with-test.patch @@ -0,0 +1,39 @@ +From df0de681dc1873534ecd2fc8371e1f2562984b68 Mon Sep 17 00:00:00 2001 +From: John Crepezzi +Date: Thu, 16 Jun 2022 08:34:05 -0400 +Subject: [PATCH] Remove the multi-call form of assert_called_with + +The `assert_called_with` helper allows passing a multi-dimensional array to +mock multiple calls to the same method for a given block. This works +fine now, but when adding support for real kwargs arguments to line up with +recent upgrades in Minitest, this approach is no longer workable because +we can't pass multiple sets of differing kwargs. + +Rather than complicated this method further, this commit removes the +multi-call form of `assert_called_with` and modifies the tests that +currently make use of that functionality to just use the underlying +`Minitest::Mock` calls. + +Co-authored-by: Eileen M. Uchitelle +--- + .../testing/method_call_assertions_test.rb | 7 -- + 1 file changed, 7 deletions(-) + +diff --git a/activesupport/test/testing/method_call_assertions_test.rb b/activesupport/test/testing/method_call_assertions_test.rb +index e75630d2e4228..4d59e0bd3c222 100644 +--- a/activesupport/test/testing/method_call_assertions_test.rb ++++ b/activesupport/test/testing/method_call_assertions_test.rb +@@ -82,13 +82,6 @@ def test_assert_called_with_failure + end + end + +- def test_assert_called_with_multiple_expected_arguments +- assert_called_with(@object, :<<, [ [ 1 ], [ 2 ] ]) do +- @object << 1 +- @object << 2 +- end +- end +- + def test_assert_called_on_instance_of_with_defaults_to_expect_once + assert_called_on_instance_of Level, :increment do + @object.increment diff --git a/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch b/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch new file mode 100644 index 0000000..b368c92 --- /dev/null +++ b/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch @@ -0,0 +1,39 @@ +From df0de681dc1873534ecd2fc8371e1f2562984b68 Mon Sep 17 00:00:00 2001 +From: John Crepezzi +Date: Thu, 16 Jun 2022 08:34:05 -0400 +Subject: [PATCH] Remove the multi-call form of assert_called_with + +The `assert_called_with` helper allows passing a multi-dimensional array to +mock multiple calls to the same method for a given block. This works +fine now, but when adding support for real kwargs arguments to line up with +recent upgrades in Minitest, this approach is no longer workable because +we can't pass multiple sets of differing kwargs. + +Rather than complicated this method further, this commit removes the +multi-call form of `assert_called_with` and modifies the tests that +currently make use of that functionality to just use the underlying +`Minitest::Mock` calls. + +Co-authored-by: Eileen M. Uchitelle +--- + .../testing/method_call_assertions.rb | 7 +- + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/activesupport/lib/active_support/testing/method_call_assertions.rb b/activesupport/lib/active_support/testing/method_call_assertions.rb +index c8d2dbaa52ab5..72451faaa8cc4 100644 +--- a/activesupport/lib/active_support/testing/method_call_assertions.rb ++++ b/activesupport/lib/active_support/testing/method_call_assertions.rb +@@ -19,12 +19,7 @@ def assert_called(object, method_name, message = nil, times: 1, returns: nil, &b + + def assert_called_with(object, method_name, args, returns: nil, &block) + mock = Minitest::Mock.new +- +- if args.all?(Array) +- args.each { |arg| mock.expect(:call, returns, arg) } +- else +- mock.expect(:call, returns, args) +- end ++ mock.expect(:call, returns, args) + + object.stub(method_name, mock, &block) + diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index c996df9..914039e 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -5,7 +5,7 @@ Name: rubygem-%{gem_name} Epoch: 1 Version: 7.0.2.3 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: http://rubyonrails.org @@ -23,6 +23,12 @@ Source2: rails-%{version}%{?prerelease}-tools.txz # Defer loading XmlMini until it's needed # https://github.com/rails/rails/pull/44340 Patch0: rubygem-activesupport-7.0.2-Defer-loading-XmlMini.patch +# Fixes for Minitest 5.16+ +# https://github.com/rails/rails/pull/45380 +Patch1: rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch +Patch2: rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with-test.patch +# https://github.com/rails/rails/pull/45370 +Patch3: rubygem-activesupport-7.0.2.3-Fix-tests-for-minitest-5.16.patch # ruby package has just soft dependency on rubygem({bigdecimal,json}), while # ActiveSupport always requires them. @@ -66,6 +72,12 @@ Documentation for %{name}. %setup -q -n %{gem_name}-%{version}%{?prerelease} -b1 -b2 %patch0 -p2 +%patch1 -p2 +%patch3 -p2 + +pushd %{_builddir} +%patch2 -p2 +popd %build gem build ../%{gem_name}-%{version}%{?prerelease}.gemspec @@ -124,6 +136,9 @@ popd %doc %{gem_instdir}/README.rdoc %changelog +* Tue Aug 02 2022 Vít Ondruch - 1:7.0.2.3-3 +- Fix Minitest 5.16+ compatibility. + * Sat Jul 23 2022 Fedora Release Engineering - 1:7.0.2.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild