From 22a0f35c6743398309bc6226cab4c42633029d8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 20 Jan 2025 15:59:18 +0100 Subject: [PATCH 1/8] Update to Active Support 8.0.1. Related: rhbz#2238177 --- .gitignore | 2 +- ...-7.0.2.3-Fix-tests-for-minitest-5.16.patch | 72 --------- ...call-form-of-assert_called_with-test.patch | 39 ----- ...ulti-call-form-of-assert_called_with.patch | 39 ----- ...ort-7.0.2.3-update-method_duplicable.patch | 111 -------------- ...he-logger-gem-is-loaded-in-Rails-7-0.patch | 22 --- ...ort-7.2.0-Drop-dependency-on-mutex-m.patch | 71 --------- ...-for-compatibility-with-Ruby-3-4-dev.patch | 139 ------------------ ...test-suite-for-Ruby-3-4-Hash-inspect.patch | 24 --- rubygem-activesupport.spec | 127 +++++----------- sources | 5 +- test_common.rb | 20 +++ 12 files changed, 61 insertions(+), 610 deletions(-) delete mode 100644 rubygem-activesupport-7.0.2.3-Fix-tests-for-minitest-5.16.patch delete mode 100644 rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with-test.patch delete mode 100644 rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch delete mode 100644 rubygem-activesupport-7.0.2.3-update-method_duplicable.patch delete mode 100644 rubygem-activesupport-7.0.8-Ensure-the-logger-gem-is-loaded-in-Rails-7-0.patch delete mode 100644 rubygem-activesupport-7.2.0-Drop-dependency-on-mutex-m.patch delete mode 100644 rubygem-activesupport-7.2.0-Update-test-suite-for-compatibility-with-Ruby-3-4-dev.patch delete mode 100644 rubygem-activesupport-8.0.0-Update-Active-Support-test-suite-for-Ruby-3-4-Hash-inspect.patch create mode 100644 test_common.rb diff --git a/.gitignore b/.gitignore index 1e332be..dd04ff5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ /activesupport-*.gem -/activesupport-*-tests.txz +/activesupport-*-tests.tar.gz /rails-*-tools.txz 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 deleted file mode 100644 index 4f325b0..0000000 --- a/rubygem-activesupport-7.0.2.3-Fix-tests-for-minitest-5.16.patch +++ /dev/null @@ -1,72 +0,0 @@ -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 deleted file mode 100644 index 7baf418..0000000 --- a/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with-test.patch +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index b368c92..0000000 --- a/rubygem-activesupport-7.0.2.3-Remove-the-multi-call-form-of-assert_called_with.patch +++ /dev/null @@ -1,39 +0,0 @@ -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-7.0.2.3-update-method_duplicable.patch b/rubygem-activesupport-7.0.2.3-update-method_duplicable.patch deleted file mode 100644 index 96e9542..0000000 --- a/rubygem-activesupport-7.0.2.3-update-method_duplicable.patch +++ /dev/null @@ -1,111 +0,0 @@ -From ca6995a80cb526958001e18d3b06da6587cd07eb Mon Sep 17 00:00:00 2001 -From: Jean Boussier -Date: Wed, 14 Feb 2024 09:52:55 +0100 -Subject: [PATCH] Update Method#duplicable? to be consistent with Ruby 3.4 - -Fix: https://github.com/rails/rails/issues/51075 - -`Method` and `UnboundMethod` used to raise on `#dup`, but not `#clone`, -this wasn't so much a feature, but a bug. - -It was fixed in https://github.com/ruby/ruby/pull/9926. ---- - .../test/core_ext/object/duplicable_test.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/activesupport/lib/active_support/core_ext/object/duplicable.rb b/activesupport/lib/active_support/core_ext/object/duplicable.rb -index 6fdf6d810ffb9..505455fe54bf3 100644 ---- a/activesupport/lib/active_support/core_ext/object/duplicable.rb -+++ b/activesupport/lib/active_support/core_ext/object/duplicable.rb -@@ -28,23 +28,32 @@ def duplicable? - end - end - --class Method -- # Methods are not duplicable: -- # -- # method(:puts).duplicable? # => false -- # method(:puts).dup # => TypeError: allocator undefined for Method -- def duplicable? -- false -- end -+methods_are_duplicable = begin -+ Object.instance_method(:duplicable?).dup -+ true -+rescue TypeError -+ false - end - --class UnboundMethod -- # Unbound methods are not duplicable: -- # -- # method(:puts).unbind.duplicable? # => false -- # method(:puts).unbind.dup # => TypeError: allocator undefined for UnboundMethod -- def duplicable? -- false -+unless methods_are_duplicable -+ class Method -+ # Methods are not duplicable: -+ # -+ # method(:puts).duplicable? # => false -+ # method(:puts).dup # => TypeError: allocator undefined for Method -+ def duplicable? -+ false -+ end -+ end -+ -+ class UnboundMethod -+ # Unbound methods are not duplicable: -+ # -+ # method(:puts).unbind.duplicable? # => false -+ # method(:puts).unbind.dup # => TypeError: allocator undefined for UnboundMethod -+ def duplicable? -+ false -+ end - end - end - -diff --git a/activesupport/test/core_ext/object/duplicable_test.rb b/activesupport/test/core_ext/object/duplicable_test.rb -index 07d9a3df4adc5..58de295719333 100644 ---- a/activesupport/test/core_ext/object/duplicable_test.rb -+++ b/activesupport/test/core_ext/object/duplicable_test.rb -@@ -6,21 +6,26 @@ - require "active_support/core_ext/numeric/time" - - class DuplicableTest < ActiveSupport::TestCase -- RAISE_DUP = [method(:puts), method(:puts).unbind, Class.new.include(Singleton).instance] -- ALLOW_DUP = ["1", "symbol_from_string".to_sym, Object.new, /foo/, [], {}, Time.now, Class.new, Module.new, BigDecimal("4.56"), nil, false, true, 1, 2.3, Complex(1), Rational(1)] -+ OBJECTS = [ -+ method(:puts), method(:puts).unbind, Class.new.include(Singleton).instance, -+ "1", "symbol_from_string".to_sym, Object.new, /foo/, [], {}, Time.now, Class.new, -+ Module.new, BigDecimal("4.56"), nil, false, true, 1, 2.3, Complex(1), Rational(1), -+ ] - -- def test_duplicable -- rubinius_skip "* Method#dup is allowed at the moment on Rubinius\n" \ -- "* https://github.com/rubinius/rubinius/issues/3089" -- -- RAISE_DUP.each do |v| -- assert_not v.duplicable?, "#{ v.inspect } should not be duplicable" -- assert_raises(TypeError, v.class.name) { v.dup } -- end -+ OBJECTS.each do |v| -+ test "#{v.class}#duplicable? matches #{v.class}#dup behavior" do -+ duplicable = begin -+ v.dup -+ true -+ rescue TypeError -+ false -+ end - -- ALLOW_DUP.each do |v| -- assert v.duplicable?, "#{ v.class } should be duplicable" -- assert_nothing_raised { v.dup } -+ if duplicable -+ assert_predicate v, :duplicable? -+ else -+ assert_not_predicate v, :duplicable? -+ end - end - end - end diff --git a/rubygem-activesupport-7.0.8-Ensure-the-logger-gem-is-loaded-in-Rails-7-0.patch b/rubygem-activesupport-7.0.8-Ensure-the-logger-gem-is-loaded-in-Rails-7-0.patch deleted file mode 100644 index 1430571..0000000 --- a/rubygem-activesupport-7.0.8-Ensure-the-logger-gem-is-loaded-in-Rails-7-0.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 6a7c72c078715380bf24f029624e6b1fb3035c97 Mon Sep 17 00:00:00 2001 -From: Antti Hukkanen -Date: Thu, 16 Jan 2025 11:17:29 +0200 -Subject: [PATCH] Ensure the logger gem is loaded in Rails 7.0 - -Fix #54260, #54263 ---- - activesupport/lib/active_support/logger_thread_safe_level.rb | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/activesupport/lib/active_support/logger_thread_safe_level.rb b/activesupport/lib/active_support/logger_thread_safe_level.rb -index 042f484f8210d..aa84a7c5de5c6 100644 ---- a/activesupport/lib/active_support/logger_thread_safe_level.rb -+++ b/activesupport/lib/active_support/logger_thread_safe_level.rb -@@ -4,6 +4,7 @@ - require "active_support/core_ext/module/attribute_accessors" - require "concurrent" - require "fiber" -+require "logger" - - module ActiveSupport - module LoggerThreadSafeLevel # :nodoc: diff --git a/rubygem-activesupport-7.2.0-Drop-dependency-on-mutex-m.patch b/rubygem-activesupport-7.2.0-Drop-dependency-on-mutex-m.patch deleted file mode 100644 index 881c079..0000000 --- a/rubygem-activesupport-7.2.0-Drop-dependency-on-mutex-m.patch +++ /dev/null @@ -1,71 +0,0 @@ -From bcdeea5da7657375df21a856135ae7a66a8c3812 Mon Sep 17 00:00:00 2001 -From: Jean Boussier -Date: Tue, 17 Oct 2023 17:46:48 +0200 -Subject: [PATCH] Drop dependency on mutex_m - -It used to be stdlib but is being extracted in modern rubies. - -Overall its usefulness is dubious. In all cases it is included in -Rails, it's only for the `synchronize` method, but end up exposing -a dozen other useless methods. - -In the end just using a Mutex is clearer and simpler. - -In some cases we can even get away with a single mutex in a constant. ---- - .../lib/active_support/notifications/fanout.rb | 11 ++++------- - 1 file changed, 4 insertions(+), 7 deletions(-) - -diff --git a/activesupport/lib/active_support/notifications/fanout.rb b/activesupport/lib/active_support/notifications/fanout.rb -index a84de150c0d63..2bc782ecee2cc 100644 ---- a/activesupport/lib/active_support/notifications/fanout.rb -+++ b/activesupport/lib/active_support/notifications/fanout.rb -@@ -1,6 +1,5 @@ - # frozen_string_literal: true - --require "mutex_m" - require "concurrent/map" - require "set" - require "active_support/core_ext/object/try" -@@ -22,13 +21,11 @@ def iterate_guarding_exceptions(listeners) - # - # This class is thread safe. All methods are reentrant. - class Fanout -- include Mutex_m -- - def initialize -+ @mutex = Mutex.new - @string_subscribers = Hash.new { |h, k| h[k] = [] } - @other_subscribers = [] - @listeners_for = Concurrent::Map.new -- super - end - - def subscribe(pattern = nil, callable = nil, monotonic: false, &block) -@@ -33,7 +30,7 @@ def inspect # :nodoc: - - def subscribe(pattern = nil, callable = nil, monotonic: false, &block) - subscriber = Subscribers.new(pattern, callable || block, monotonic) -- synchronize do -+ @mutex.synchronize do - case pattern - when String - @string_subscribers[pattern] << subscriber -@@ -49,7 +46,7 @@ def subscribe(pattern = nil, callable = nil, monotonic: false, &block) - end - - def unsubscribe(subscriber_or_name) -- synchronize do -+ @mutex.synchronize do - case subscriber_or_name - when String - @string_subscribers[subscriber_or_name].clear -@@ -107,7 +104,7 @@ def publish_event(event) - - def listeners_for(name) - # this is correctly done double-checked locking (Concurrent::Map's lookups have volatile semantics) -- @listeners_for[name] || synchronize do -+ @listeners_for[name] || @mutex.synchronize do - # use synchronisation when accessing @subscribers - @listeners_for[name] ||= - @string_subscribers[name] + @other_subscribers.select { |s| s.subscribed_to?(name) } diff --git a/rubygem-activesupport-7.2.0-Update-test-suite-for-compatibility-with-Ruby-3-4-dev.patch b/rubygem-activesupport-7.2.0-Update-test-suite-for-compatibility-with-Ruby-3-4-dev.patch deleted file mode 100644 index d9e74ea..0000000 --- a/rubygem-activesupport-7.2.0-Update-test-suite-for-compatibility-with-Ruby-3-4-dev.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 50daadaa71f4db88cef3080afde51e203c700e67 Mon Sep 17 00:00:00 2001 -From: Jean Boussier -Date: Fri, 16 Feb 2024 09:53:45 +0100 -Subject: [PATCH] Update test suite for compatibility with Ruby 3.4-dev - -https://bugs.ruby-lang.org/issues/19117 and https://bugs.ruby-lang.org/issues/16495 -slightly change how backtrace are rendered which makes a few tests fail. ---- - activesupport/test/callbacks_test.rb | 57 ++++++++++----- - activesupport/test/core_ext/module_test.rb | 4 +- - .../test/core_ext/time_with_zone_test.rb | 2 +- - activesupport/test/test_case_test.rb | 4 +- - 4 files changed, 45 insertions(+), 22 deletions(-) - -diff --git a/activesupport/test/callbacks_test.rb b/activesupport/test/callbacks_test.rb -index 1083964eca0e7..b38da7a6acd5b 100644 ---- a/activesupport/test/callbacks_test.rb -+++ b/activesupport/test/callbacks_test.rb -@@ -473,18 +473,33 @@ def test_tidy_call_stack - # callbacks that have been invoked, if there are any (plus - # whatever the callbacks do themselves, of course). - -- assert_equal [ -- "block in save", -- "block in run_callbacks", -- "tweedle_deedle", -- "block in run_callbacks", -- "w0tyes", -- "block in run_callbacks", -- "tweedle_dum", -- "block in run_callbacks", -- "run_callbacks", -- "save" -- ], call_stack.map(&:label) -+ if RUBY_VERSION >= "3.4" -+ assert_equal [ -+ "block in CallbacksTest::MySlate#save", -+ "block in ActiveSupport::Callbacks#run_callbacks", -+ "CallbacksTest::AroundPerson#tweedle_deedle", -+ "block in ActiveSupport::Callbacks#run_callbacks", -+ "CallbacksTest::AroundPerson#w0tyes", -+ "block in ActiveSupport::Callbacks#run_callbacks", -+ "CallbacksTest::AroundPerson#tweedle_dum", -+ "block in ActiveSupport::Callbacks#run_callbacks", -+ "ActiveSupport::Callbacks#run_callbacks", -+ "CallbacksTest::MySlate#save", -+ ].join("\n"), call_stack.map(&:label).join("\n") -+ else -+ assert_equal [ -+ "block in save", -+ "block in run_callbacks", -+ "tweedle_deedle", -+ "block in run_callbacks", -+ "w0tyes", -+ "block in run_callbacks", -+ "tweedle_dum", -+ "block in run_callbacks", -+ "run_callbacks", -+ "save", -+ ].join("\n"), call_stack.map(&:label).join("\n") -+ end - end - - def test_short_call_stack -@@ -503,11 +518,19 @@ def test_short_call_stack - # there should be just one line. run_callbacks yields directly - # back to its caller. - -- assert_equal [ -- "block in save", -- "run_callbacks", -- "save" -- ], call_stack.map(&:label) -+ if RUBY_VERSION >= "3.4" -+ assert_equal [ -+ "block in CallbacksTest::Person#save", -+ "ActiveSupport::Callbacks#run_callbacks", -+ "CallbacksTest::Person#save", -+ ].join("\n"), call_stack.map(&:label).join("\n") -+ else -+ assert_equal [ -+ "block in save", -+ "run_callbacks", -+ "save", -+ ].join("\n"), call_stack.map(&:label).join("\n") -+ end - end - end - -diff --git a/activesupport/test/core_ext/module_test.rb b/activesupport/test/core_ext/module_test.rb -index d5899c646ab8b..23fee4bf125cd 100644 ---- a/activesupport/test/core_ext/module_test.rb -+++ b/activesupport/test/core_ext/module_test.rb -@@ -394,7 +394,7 @@ def test_delegate_missing_to_does_not_delegate_to_private_methods - DecoratedReserved.new(@david).private_name - end - -- assert_match(/undefined method `private_name' for/, e.message) -+ assert_match(/undefined method [`']private_name' for/, e.message) - end - - def test_delegate_missing_to_does_not_delegate_to_fake_methods -@@ -402,7 +402,7 @@ def test_delegate_missing_to_does_not_delegate_to_fake_methods - DecoratedReserved.new(@david).my_fake_method - end - -- assert_match(/undefined method `my_fake_method' for/, e.message) -+ assert_match(/undefined method [`']my_fake_method' for/, e.message) - end - - def test_delegate_missing_to_raises_delegation_error_if_target_nil -diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb -index ff4170dd82875..19fc50087809c 100644 ---- a/activesupport/test/core_ext/time_with_zone_test.rb -+++ b/activesupport/test/core_ext/time_with_zone_test.rb -@@ -1113,7 +1113,7 @@ def test_no_method_error_has_proper_context - e = assert_raises(NoMethodError) { - @twz.this_method_does_not_exist - } -- assert_match(/undefined method `this_method_does_not_exist' for.*ActiveSupport::TimeWithZone/, e.message) -+ assert_match(/undefined method [`']this_method_does_not_exist' for.*ActiveSupport::TimeWithZone/, e.message) - assert_no_match "rescue", e.backtrace.first - end - end -diff --git a/activesupport/test/test_case_test.rb b/activesupport/test/test_case_test.rb -index dc2c2772996d7..05f1280790f3b 100644 ---- a/activesupport/test/test_case_test.rb -+++ b/activesupport/test/test_case_test.rb -@@ -391,8 +391,8 @@ def test_fails_and_warning_is_logged_if_wrong_error_caught - Other block based assertions (e.g. `assert_no_changes`) can be used, as long as `assert_raises` is inside their block. - MSG - assert @out.string.include?(expected), @out.string -- assert error.message.include?("ArgumentError: ArgumentError") -- assert error.message.include?("in `block (2 levels) in run_test_that_should_fail_confusingly'") -+ assert_includes error.message, "ArgumentError: ArgumentError" -+ assert_includes error.message, "run_test_that_should_fail_confusingly" - end - - private diff --git a/rubygem-activesupport-8.0.0-Update-Active-Support-test-suite-for-Ruby-3-4-Hash-inspect.patch b/rubygem-activesupport-8.0.0-Update-Active-Support-test-suite-for-Ruby-3-4-Hash-inspect.patch deleted file mode 100644 index 49c1b03..0000000 --- a/rubygem-activesupport-8.0.0-Update-Active-Support-test-suite-for-Ruby-3-4-Hash-inspect.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 95c2ee8e0503215ad94629383311301742ebf012 Mon Sep 17 00:00:00 2001 -From: Jean Boussier -Date: Sat, 5 Oct 2024 12:25:51 -0400 -Subject: [PATCH] Update Active Support test suite for Ruby 3.4 Hash#inspect - -Ref: https://github.com/ruby/ruby/pull/10924 -Ref: https://bugs.ruby-lang.org/issues/20433 ---- - activesupport/test/broadcast_logger_test.rb | 4 ++-- - activesupport/test/ordered_options_test.rb | 18 +++++++++--------- - 2 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/activesupport/test/ordered_options_test.rb b/activesupport/test/ordered_options_test.rb -index 8eca0fe73bec7..eb8b50c62f511 100644 ---- a/activesupport/test/ordered_options_test.rb -+++ b/activesupport/test/ordered_options_test.rb -@@ -123,6 +123,6 @@ def test_inspect - a.foo = :bar - a[:baz] = :quz - -- assert_equal "#:bar, :baz=>:quz}>", a.inspect -+ assert_equal "#", a.inspect - end - end diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index 138237d..27b2ae2 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -4,43 +4,18 @@ Name: rubygem-%{gem_name} Epoch: 1 -Version: 7.0.8 -Release: 11%{?dist} +Version: 8.0.1 +Release: 1%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT -URL: http://rubyonrails.org +URL: https://rubyonrails.org Source0: https://rubygems.org/gems/%{gem_name}-%{version}%{?prerelease}.gem -# The activesupport gem doesn't ship with the test suite. -# You may check it out like so -# git clone http://github.com/rails/rails.git -# cd rails/activesupport && git archive -v -o activesupport-7.0.8-tests.txz v7.0.8 test/ -Source1: %{gem_name}-%{version}%{?prerelease}-tests.txz +# git clone http://github.com/rails/rails.git && cd rails/activesupport +# git archive -v -o activesupport-8.0.1-tests.tar.gz v8.0.1 test/ +Source1: %{gem_name}-%{version}%{?prerelease}-tests.tar.gz # The tools are needed for the test suite, are however unpackaged in gem file. -# You may get them like so -# git clone http://github.com/rails/rails.git --no-checkout -# cd rails && git archive -v -o rails-7.0.8-tools.txz v7.0.8 tools/ -Source2: rails-%{version}%{?prerelease}-tools.txz -# 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 -# https://github.com/rails/rails/pull/51079 -Patch4: rubygem-activesupport-7.0.2.3-update-method_duplicable.patch -# Drop mutex_m dependency to ease Ruby 3.4 compatibility. -# https://github.com/rails/rails/pull/49674 -Patch5: rubygem-activesupport-7.2.0-Drop-dependency-on-mutex-m.patch -# Ruby 3.4 backtrace compatibility. -# https://github.com/rails/rails/pull/51101 -Patch6: rubygem-activesupport-7.2.0-Update-test-suite-for-compatibility-with-Ruby-3-4-dev.patch -# Ruby 3.4 `Hash#inspect` compatibility. -# https://github.com/rails/rails/commit/95c2ee8e0503215ad94629383311301742ebf012 -Patch7: rubygem-activesupport-8.0.0-Update-Active-Support-test-suite-for-Ruby-3-4-Hash-inspect.patch -# concurrent-ruby 1.3.5+ drops Logger dependency. Make sure to load Logger -# explicitly. -# https://github.com/rails/rails/pull/54264 -Patch8: rubygem-activesupport-7.0.8-Ensure-the-logger-gem-is-loaded-in-Rails-7-0.patch +# https://github.com/rails/rails/blob/main/tools/test_common.rb +Source2: https://raw.githubusercontent.com/rails/rails/e25d738430bdc6bdd04cd28be705484ea953e74e/tools/test_common.rb # Ruby package has just soft dependency on rubygem(json), while # ActiveSupport always requires it. @@ -53,30 +28,32 @@ Requires: tzdata # Let's keep Requires and BuildRequires sorted alphabeticaly BuildRequires: ruby(release) BuildRequires: rubygems-devel -BuildRequires: ruby >= 2.2.2 +BuildRequires: ruby >= 3.2.0 BuildRequires: rubygem(bigdecimal) BuildRequires: rubygem(builder) BuildRequires: rubygem(concurrent-ruby) BuildRequires: rubygem(connection_pool) BuildRequires: rubygem(dalli) BuildRequires: rubygem(drb) -BuildRequires: (rubygem(i18n) >= 0.7 with rubygem(i18n) < 2) -BuildRequires: rubygem(minitest) >= 5.0.0 -BuildRequires: rubygem(rack) -BuildRequires: rubygem(tzinfo) >= 2.0 +BuildRequires: rubygem(i18n) >= 0.7 BuildRequires: rubygem(listen) +BuildRequires: rubygem(minitest) >= 5.0.0 +BuildRequires: rubygem(msgpack) +BuildRequires: rubygem(rack) BuildRequires: rubygem(redis) BuildRequires: rubygem(rexml) +BuildRequires: rubygem(tzinfo) >= 2.0 BuildRequires: memcached +BuildRequires: %{_bindir}/valkey-server BuildRequires: tzdata BuildArch: noarch - %description A toolkit of support libraries and Ruby core extensions extracted from the Rails framework. Rich support for multibyte strings, internationalization, time zones, and testing. + %package doc Summary: Documentation for %{name} Requires: %{name} = %{epoch}:%{version}-%{release} @@ -86,32 +63,7 @@ BuildArch: noarch Documentation for %{name}. %prep -%setup -q -n %{gem_name}-%{version}%{?prerelease} -b1 -b2 - -%patch 1 -p2 -%patch 3 -p2 -mv %{_builddir}/test . -%patch 4 -p2 -mv test %{_builddir} -%patch 5 -p2 -%patch 8 -p2 - -pushd %{_builddir} -%patch 2 -p2 -%patch 6 -p2 -%patch 7 -p2 -popd - -# Add several dependencies to avoid Ruby 3.3+ warnings. -# https://github.com/rails/rails/commit/81699b52d2acff1840e3ace5e59412f4fa3934ab -%gemspec_add_dep -g base64 -%gemspec_add_dep -g drb -# https://github.com/rails/rails/commit/a77535c74c7047a517cc45ff8ecb416ea439c28d -%gemspec_add_dep -g bigdecimal -# https://github.com/rails/rails/commit/455b5f106e5a3eeba1e7139c63fd83dc0dd81caf -%gemspec_add_dep -g logger -%gemspec_add_dep -g securerandom -%gemspec_add_dep -g benchmark +%setup -q -n %{gem_name}-%{version}%{?prerelease} -b1 %build gem build ../%{gem_name}-%{version}%{?prerelease}.gemspec @@ -123,39 +75,32 @@ cp -a .%{gem_dir}/* \ %{buildroot}%{gem_dir}/ %check -pushd .%{gem_instdir} +( cd .%{gem_instdir} # Move the tests into place -ln -s %{_builddir}/tools .. -cp -a %{_builddir}/test . +cp -a %{builddir}/test . -# These tests are really unstable, but they seems to be passing upstream :/ -# mem_cache_store_test: These tests do not pass in Koji; but work locally -# redis_cache_store_test: failed to require "redis/connection/hiredis" -for f in \ - test/evented_file_update_checker_test.rb \ - test/cache/stores/redis_cache_store_test.rb \ - test/cache/stores/mem_cache_store_test.rb -do - mv $f{,.disable} -done - -# This seems to be unstable as well ... -# https://github.com/rails/rails/issues/25682 -sed -i '/def test_iso8601_output_and_reparsing$/,/^ end$/ s/^/#/' test/core_ext/duration_test.rb - -# Workaround TransformValuesTest#test_default_procs_do_not_persist_*_mapping -# test failures due to bug in Ruby 2.7.{0,1}. -# https://bugs.ruby-lang.org/issues/16498 -sed -i '/assert_nil mapped\[:b\]/ s/^/#/' test/core_ext/hash/transform_values_test.rb +mkdir ../tools +ln -s %{SOURCE2} ../tools/ sed -i '/require .bundler./ s/^/#/' test/abstract_unit.rb +# Start a testing Valkey (Redis) server instance +VALKEY_DIR=$(mktemp -d) +valkey-server --dir $VALKEY_DIR --pidfile $VALKEY_DIR/valkey.pid --daemonize yes + +# Start Memcached server memcached & mPID=$! sleep 1 -ruby -Ilib:test -e 'Dir.glob "./test/**/*_test.rb", &method(:require)' + +ruby -Ilib -e 'Dir.glob "./test/**/*_test.rb", &method(:require)' -- -v + +# Shutdown Memcached kill -15 $mPID -popd + +# Shutdown Valkey. +kill -INT $(cat $VALKEY_DIR/valkey.pid) +) %files %dir %{gem_instdir} @@ -170,6 +115,10 @@ popd %doc %{gem_instdir}/README.rdoc %changelog +* Thu Jan 23 2025 Vít Ondruch - 1:8.0.1-1 +- Update to Active Support 8.0.1. + Related: rhbz#2238177 + * Thu Jan 23 2025 Vít Ondruch - 1:7.0.8-11 - Fix compatibility with concurrent-ruby 1.3.5+ diff --git a/sources b/sources index c1d38c3..97106dd 100644 --- a/sources +++ b/sources @@ -1,3 +1,2 @@ -SHA512 (activesupport-7.0.8.gem) = d3f45452751a3ff4acd534ad6a71e5747d2e64683b562b99c3f97ca3980424aa0093d028fab94a6429410fb4878c6e34a2af2ad8c0c04358648e180a732250dc -SHA512 (activesupport-7.0.8-tests.txz) = 153739dca3cd20938e7f1bb255d330e51e91fb9901b6b2ff5ffd76277e44e38090b1037f9eeb574d8ef429c1d3d689dbeb27b9d02ff33fe8f21cef2472a2e8b2 -SHA512 (rails-7.0.8-tools.txz) = a67b43ecabe47d23bd437651c97c87e1323dc2eb20d0fffa2c8f0d75fae7502571c3a2633c5bdeb9cc4a383c88b5eade49d55efe895857285b3186b6d4da4b26 +SHA512 (activesupport-8.0.1-tests.tar.gz) = 8775b9072fb7e2e35d66b5d265f5e44d9810f10261377dc4f7f5733119e86d2892d30a212cad964855dad9d58783a3e57c4ff6517fca235cca6c7511e33ed192 +SHA512 (activesupport-8.0.1.gem) = bde090041d81591b6a8703c90585d285db44c47448669b2b884574b2d6d414ef043605c6a1c982b71b57d88989882f91f7bd12e4c899d560f56a878de099f62f diff --git a/test_common.rb b/test_common.rb new file mode 100644 index 0000000..fcc8155 --- /dev/null +++ b/test_common.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +ActiveSupport::TestCase.alias_method :force_skip, :skip + +if ENV["BUILDKITE"] + require "minitest-ci" + ENV.delete("CI") # CI has affect on the applications, and we don't want it applied to the apps. + + Minitest::Ci.report_dir = File.join(__dir__, "../test-reports/#{ENV['BUILDKITE_JOB_ID']}") + + module DisableSkipping # :nodoc: + private + def skip(message = nil, *) + flunk "Skipping tests is not allowed in this environment (#{message})\n" \ + "Tests should only be skipped when the environment is missing a required dependency.\n" \ + "This should never happen on CI." + end + end + ActiveSupport::TestCase.include(DisableSkipping) +end From c162969362e75b6e212a5a8dc1d86d23aa57724e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Mon, 20 Jan 2025 17:08:15 +0100 Subject: [PATCH 2/8] Disable Redis test cases on i686 Valkey (Redis) is not available there \[[1]\]. The other option would be to `ExcludeArch: %{ix86}`. This would mean the package would not be build on `ix86`, therefore not tested on that arch. Hard to judge what is better choice. [1]: https://src.fedoraproject.org/rpms/valkey/blob/bec8cff7989ce1e5fc2c494ccfd01cf42fe743f5/f/valkey.spec#_66 --- rubygem-activesupport.spec | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index 27b2ae2..3cc1f8f 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -44,7 +44,9 @@ BuildRequires: rubygem(redis) BuildRequires: rubygem(rexml) BuildRequires: rubygem(tzinfo) >= 2.0 BuildRequires: memcached +%ifnarch %{ix86} BuildRequires: %{_bindir}/valkey-server +%endif BuildRequires: tzdata BuildArch: noarch @@ -85,8 +87,10 @@ ln -s %{SOURCE2} ../tools/ sed -i '/require .bundler./ s/^/#/' test/abstract_unit.rb # Start a testing Valkey (Redis) server instance +%ifnarch %{ix86} VALKEY_DIR=$(mktemp -d) valkey-server --dir $VALKEY_DIR --pidfile $VALKEY_DIR/valkey.pid --daemonize yes +%endif # Start Memcached server memcached & @@ -99,7 +103,9 @@ ruby -Ilib -e 'Dir.glob "./test/**/*_test.rb", &method(:require)' -- -v kill -15 $mPID # Shutdown Valkey. +%ifnarch %{ix86} kill -INT $(cat $VALKEY_DIR/valkey.pid) +%endif ) %files From 94a65b1e0cb2936febcac540a6c5b297ca2c7743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 2 Jul 2025 17:34:02 +0200 Subject: [PATCH 3/8] Update to Active Support 8.0.2. Related: rhbz#2238177 --- rubygem-activesupport.spec | 11 ++++++----- sources | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index 3cc1f8f..a634bd1 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -4,16 +4,16 @@ Name: rubygem-%{gem_name} Epoch: 1 -Version: 8.0.1 +Version: 8.0.2 Release: 1%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: https://rubyonrails.org Source0: https://rubygems.org/gems/%{gem_name}-%{version}%{?prerelease}.gem # git clone http://github.com/rails/rails.git && cd rails/activesupport -# git archive -v -o activesupport-8.0.1-tests.tar.gz v8.0.1 test/ +# git archive -v -o activesupport-8.0.2-tests.tar.gz v8.0.2 test/ Source1: %{gem_name}-%{version}%{?prerelease}-tests.tar.gz -# The tools are needed for the test suite, are however unpackaged in gem file. +# This is needed due to `force_skip` alias. # https://github.com/rails/rails/blob/main/tools/test_common.rb Source2: https://raw.githubusercontent.com/rails/rails/e25d738430bdc6bdd04cd28be705484ea953e74e/tools/test_common.rb @@ -83,6 +83,7 @@ cp -a %{builddir}/test . mkdir ../tools ln -s %{SOURCE2} ../tools/ +touch ../tools/strict_warnings.rb sed -i '/require .bundler./ s/^/#/' test/abstract_unit.rb @@ -121,8 +122,8 @@ kill -INT $(cat $VALKEY_DIR/valkey.pid) %doc %{gem_instdir}/README.rdoc %changelog -* Thu Jan 23 2025 Vít Ondruch - 1:8.0.1-1 -- Update to Active Support 8.0.1. +* Wed Jul 02 2025 Vít Ondruch - 1:8.0.2-1 +- Update to Active Support 8.0.2. Related: rhbz#2238177 * Thu Jan 23 2025 Vít Ondruch - 1:7.0.8-11 diff --git a/sources b/sources index 97106dd..66d75e1 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (activesupport-8.0.1-tests.tar.gz) = 8775b9072fb7e2e35d66b5d265f5e44d9810f10261377dc4f7f5733119e86d2892d30a212cad964855dad9d58783a3e57c4ff6517fca235cca6c7511e33ed192 -SHA512 (activesupport-8.0.1.gem) = bde090041d81591b6a8703c90585d285db44c47448669b2b884574b2d6d414ef043605c6a1c982b71b57d88989882f91f7bd12e4c899d560f56a878de099f62f +SHA512 (activesupport-8.0.2-tests.tar.gz) = 60b6f764596c9fdacfa6f3172d90fd684ae48c8f1a1ddd57b92be040256709239f1ce528362b68978d440ac18e37a169edab9c73416229ae4da572d9ed33be49 +SHA512 (activesupport-8.0.2.gem) = 3c448165d856ef83e5e76b581f4327445f108f0e35592d910e8d88c92a8cbefbf47837994d10fefc8b4a6c176aa01971df5f6b57182c40aa84a79641de3821c1 From 3e5369ab10f11f9425a529c43dd87f5398060346 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 12:15:43 +0000 Subject: [PATCH 4/8] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- rubygem-activesupport.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index a634bd1..43ff4a4 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -5,7 +5,7 @@ Name: rubygem-%{gem_name} Epoch: 1 Version: 8.0.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: https://rubyonrails.org @@ -122,6 +122,9 @@ kill -INT $(cat $VALKEY_DIR/valkey.pid) %doc %{gem_instdir}/README.rdoc %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 1:8.0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Wed Jul 02 2025 Vít Ondruch - 1:8.0.2-1 - Update to Active Support 8.0.2. Related: rhbz#2238177 From c60eaabadf79acf3062c0316117684f410ee4b8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 7 Oct 2025 09:36:10 +0200 Subject: [PATCH 5/8] Update to Active Support 8.0.3. Related: rhzb#2388437 --- ...precision-to-BigDecimal-when-parsing.patch | 24 +++++++++++++++++++ rubygem-activesupport.spec | 15 +++++++++--- sources | 4 ++-- 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal-when-parsing.patch diff --git a/rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal-when-parsing.patch b/rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal-when-parsing.patch new file mode 100644 index 0000000..7027f9a --- /dev/null +++ b/rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal-when-parsing.patch @@ -0,0 +1,24 @@ +From 283d96ea53f45eedf09a31bef739575df96e87df Mon Sep 17 00:00:00 2001 +From: zzak +Date: Sun, 5 Oct 2025 10:31:09 +0900 +Subject: [PATCH] Always pass default precision to BigDecimal when parsing + Float in XmlMini + +https://github.com/ruby/bigdecimal/blob/cb2458bde33bf90a8364b58d53e8948a7ba555ea/ext/bigdecimal/bigdecimal.c#L2747-L2749 +--- + activesupport/lib/active_support/xml_mini.rb | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/activesupport/lib/active_support/xml_mini.rb b/activesupport/lib/active_support/xml_mini.rb +index 2c2b8185b1b80..c6d7ce5b7c251 100644 +--- a/activesupport/lib/active_support/xml_mini.rb ++++ b/activesupport/lib/active_support/xml_mini.rb +@@ -74,6 +74,8 @@ def content_type + "decimal" => Proc.new do |number| + if String === number + number.to_d ++ elsif Float === number ++ BigDecimal(number, 0) + else + BigDecimal(number) + end diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index 43ff4a4..bdfc791 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -4,18 +4,21 @@ Name: rubygem-%{gem_name} Epoch: 1 -Version: 8.0.2 -Release: 2%{?dist} +Version: 8.0.3 +Release: 1%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: https://rubyonrails.org Source0: https://rubygems.org/gems/%{gem_name}-%{version}%{?prerelease}.gem # git clone http://github.com/rails/rails.git && cd rails/activesupport -# git archive -v -o activesupport-8.0.2-tests.tar.gz v8.0.2 test/ +# git archive -v -o activesupport-8.0.3-tests.tar.gz v8.0.3 test/ Source1: %{gem_name}-%{version}%{?prerelease}-tests.tar.gz # This is needed due to `force_skip` alias. # https://github.com/rails/rails/blob/main/tools/test_common.rb Source2: https://raw.githubusercontent.com/rails/rails/e25d738430bdc6bdd04cd28be705484ea953e74e/tools/test_common.rb +# Fix XmlMiniTest::ParsingTest#test_decimal test failure with BigDecimal 3.2.3+ +# https://github.com/rails/rails/pull/55840 +Patch1: rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal-when-parsing.patch # Ruby package has just soft dependency on rubygem(json), while # ActiveSupport always requires it. @@ -67,6 +70,8 @@ Documentation for %{name}. %prep %setup -q -n %{gem_name}-%{version}%{?prerelease} -b1 +%patch 1 -p2 + %build gem build ../%{gem_name}-%{version}%{?prerelease}.gemspec %gem_install @@ -122,6 +127,10 @@ kill -INT $(cat $VALKEY_DIR/valkey.pid) %doc %{gem_instdir}/README.rdoc %changelog +* Mon Oct 06 2025 Vít Ondruch - 1:8.0.3-1 +- Update to Active Support 8.0.3. + Related: rhzb#2388437 + * Fri Jul 25 2025 Fedora Release Engineering - 1:8.0.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index 66d75e1..f66d7f6 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (activesupport-8.0.2-tests.tar.gz) = 60b6f764596c9fdacfa6f3172d90fd684ae48c8f1a1ddd57b92be040256709239f1ce528362b68978d440ac18e37a169edab9c73416229ae4da572d9ed33be49 -SHA512 (activesupport-8.0.2.gem) = 3c448165d856ef83e5e76b581f4327445f108f0e35592d910e8d88c92a8cbefbf47837994d10fefc8b4a6c176aa01971df5f6b57182c40aa84a79641de3821c1 +SHA512 (activesupport-8.0.3-tests.tar.gz) = d11560cc2246aaa16fcb7f213061cb6a355bd2e4bbc0cd3e0541db979aa90d28b738ceaf36935f49688953faf94314e2ae8da3e2f88436ac31c0a77a5804a91e +SHA512 (activesupport-8.0.3.gem) = f46b6710c65d7b59e0c7f1eb48641aa4ef0568b2d64147866e1dfa699c0b4c068bf443cc9967190ed47c2f6ea98137668a300455792982061e280a7df605bb4f From bacee91af1b9a0fb4648af56bdc24182f53b4948 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Sun, 9 Nov 2025 22:43:30 +0900 Subject: [PATCH 6/8] Backport upstream change for testsuite removal for new benchmark gem in ruby4_0 --- rubygem-activesupport.spec | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index bdfc791..d5b6465 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -5,7 +5,7 @@ Name: rubygem-%{gem_name} Epoch: 1 Version: 8.0.3 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: https://rubyonrails.org @@ -92,6 +92,12 @@ touch ../tools/strict_warnings.rb sed -i '/require .bundler./ s/^/#/' test/abstract_unit.rb +# backported from: +# https://github.com/rails/rails/commit/632b2c5128581731c2451459081176a43f474f74 +# benchmark 0.5.0 in ruby4_0 defines Benchmark.ms{}, so the following +# test is no longer needed +sed -i test/core_ext/benchmark_test.rb -e '\@test_is_deprecated@s@$@ ; skip ""@' + # Start a testing Valkey (Redis) server instance %ifnarch %{ix86} VALKEY_DIR=$(mktemp -d) @@ -127,6 +133,10 @@ kill -INT $(cat $VALKEY_DIR/valkey.pid) %doc %{gem_instdir}/README.rdoc %changelog +* Sun Nov 09 2025 Mamoru TASAKA - 1:8.0.3-2 +- Backport upstream change for testsuite removal for new benchmark gem in + ruby4_0 + * Mon Oct 06 2025 Vít Ondruch - 1:8.0.3-1 - Update to Active Support 8.0.3. Related: rhzb#2388437 From 6b021929fc6a425c1cbc1c55a7e46b498c6299f9 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Mon, 29 Dec 2025 16:30:55 +0900 Subject: [PATCH 7/8] Backport upstream fix to support minitest 6 --- rubygem-activesupport-pr56202-minitest6.patch | 103 ++++++++++++++++++ rubygem-activesupport.spec | 22 +++- 2 files changed, 120 insertions(+), 5 deletions(-) create mode 100644 rubygem-activesupport-pr56202-minitest6.patch diff --git a/rubygem-activesupport-pr56202-minitest6.patch b/rubygem-activesupport-pr56202-minitest6.patch new file mode 100644 index 0000000..1e01666 --- /dev/null +++ b/rubygem-activesupport-pr56202-minitest6.patch @@ -0,0 +1,103 @@ +From 831f0f96d0f9c132b28d3fa22ab82806115747b0 Mon Sep 17 00:00:00 2001 +From: Ryan Davis +Date: Thu, 20 Nov 2025 14:16:51 -0800 +Subject: [PATCH 3/5] MT6: implementation fixes + +MT6 changes the way assertion messages work. Now, if a proc is passed +in for the message, it wins untouched. So for the rails assertions +that want to have diffs shown while calling assert_equal with a +message proc, the proc needs to call diff itself. This feels redundant +to me, but not my call. + +And since the procs win now, they need to provide their own periods at +the end of the text. +--- + activesupport/lib/active_support/testing/assertions.rb | 8 +++++--- + .../lib/active_support/testing/parallelization/worker.rb | 6 +++++- + 2 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/activesupport/lib/active_support/testing/assertions.rb b/activesupport/lib/active_support/testing/assertions.rb +index 178b5b350abba..4f2c6b105bc19 100644 +--- a/activesupport/lib/active_support/testing/assertions.rb ++++ b/activesupport/lib/active_support/testing/assertions.rb +@@ -124,7 +124,8 @@ def assert_difference(expression, *args, &block) + actual = exp.call + rich_message = -> do + code_string = code.respond_to?(:call) ? _callable_to_source_string(code) : code +- error = "`#{code_string}` didn't change by #{diff}, but by #{actual - before_value}" ++ error = "`#{code_string}` didn't change by #{diff}, but by #{actual - before_value}." ++ error = "#{error}\n#{diff before_value + diff, actual}" if Minitest::VERSION > "6" + error = "#{message}.\n#{error}" if message + error + end +@@ -228,7 +229,7 @@ def assert_changes(expression, message = nil, from: UNTRACKED, to: UNTRACKED, &b + rich_message = -> do + code_string = expression.respond_to?(:call) ? _callable_to_source_string(expression) : expression + error = "`#{code_string}` didn't change" +- error = "#{error}. It was already #{to.inspect}" if before == to ++ error = "#{error}. It was already #{to.inspect}." if before == to + error = "#{message}.\n#{error}" if message + error + end +@@ -296,8 +297,9 @@ def assert_no_changes(expression, message = nil, from: UNTRACKED, &block) + + rich_message = -> do + code_string = expression.respond_to?(:call) ? _callable_to_source_string(expression) : expression +- error = "`#{code_string}` changed" ++ error = "`#{code_string}` changed." + error = "#{message}.\n#{error}" if message ++ error = "#{error}\n#{diff before, after}" if Minitest::VERSION > "6" + error + end + +diff --git a/activesupport/lib/active_support/testing/parallelization/worker.rb b/activesupport/lib/active_support/testing/parallelization/worker.rb +index d008277f8924c..daad6ce659103 100644 +--- a/activesupport/lib/active_support/testing/parallelization/worker.rb ++++ b/activesupport/lib/active_support/testing/parallelization/worker.rb +@@ -49,7 +49,11 @@ def perform_job(job) + set_process_title("#{klass}##{method}") + + result = klass.with_info_handler reporter do +- Minitest.run_one_method(klass, method) ++ if Minitest.respond_to?(:run_one_method) then ++ Minitest.run_one_method(klass, method) ++ else ++ klass.new(method).run ++ end + end + + safe_record(reporter, result) + +From 2c1ca03402de9a5bc4e482da739e39f5bd47f0b3 Mon Sep 17 00:00:00 2001 +From: Ryan Davis +Date: Thu, 20 Nov 2025 15:34:55 -0800 +Subject: [PATCH 4/5] MT6: test fixes + +Mostly minor and mostly centered around whether there are diffs. +--- + actionpack/test/dispatch/routing/route_set_test.rb | 4 ++-- + activesupport/test/test_case_test.rb | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/activesupport/test/test_case_test.rb b/activesupport/test/test_case_test.rb +index 7e5084e4b041c..05ed8f2ae629d 100644 +--- a/activesupport/test/test_case_test.rb ++++ b/activesupport/test/test_case_test.rb +@@ -243,7 +243,7 @@ def test_assert_changes_with_to_option_but_no_change_has_special_message + end + end + +- assert_equal "`@object.num` didn't change. It was already 0.\nExpected 0 to not be equal to 0.", error.message ++ assert_match "`@object.num` didn't change. It was already 0.", error.message + end + + def test_assert_changes_message_with_lambda +@@ -255,7 +255,7 @@ def test_assert_changes_message_with_lambda + end + end + +- assert_equal "`@object.num` didn't change. It was already 0.\nExpected 0 to not be equal to 0.", error.message ++ assert_match "`@object.num` didn't change. It was already 0.", error.message + end + + def test_assert_changes_with_wrong_to_option diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index d5b6465..fa35ad4 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -5,7 +5,7 @@ Name: rubygem-%{gem_name} Epoch: 1 Version: 8.0.3 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: https://rubyonrails.org @@ -19,6 +19,9 @@ Source2: https://raw.githubusercontent.com/rails/rails/e25d738430bdc6bdd04cd28be # Fix XmlMiniTest::ParsingTest#test_decimal test failure with BigDecimal 3.2.3+ # https://github.com/rails/rails/pull/55840 Patch1: rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal-when-parsing.patch +# Support minitest 6 +# https://github.com/rails/rails/pull/56202/ +Patch2: rubygem-activesupport-pr56202-minitest6.patch # Ruby package has just soft dependency on rubygem(json), while # ActiveSupport always requires it. @@ -41,6 +44,7 @@ BuildRequires: rubygem(drb) BuildRequires: rubygem(i18n) >= 0.7 BuildRequires: rubygem(listen) BuildRequires: rubygem(minitest) >= 5.0.0 +BuildRequires: rubygem(minitest-mock) BuildRequires: rubygem(msgpack) BuildRequires: rubygem(rack) BuildRequires: rubygem(redis) @@ -68,9 +72,14 @@ BuildArch: noarch Documentation for %{name}. %prep -%setup -q -n %{gem_name}-%{version}%{?prerelease} -b1 +%setup -q -n %{gem_name}-%{version}%{?prerelease} -a 1 %patch 1 -p2 +%patch 2 -p2 + +# lib/active_support/testing/method_call_assertions.rb +# always needs minitest/mock +%gemspec_add_dep -g minitest-mock %build gem build ../%{gem_name}-%{version}%{?prerelease}.gemspec @@ -82,9 +91,10 @@ cp -a .%{gem_dir}/* \ %{buildroot}%{gem_dir}/ %check -( cd .%{gem_instdir} # Move the tests into place -cp -a %{builddir}/test . +cp -a test .%{gem_instdir} + +cd .%{gem_instdir} mkdir ../tools ln -s %{SOURCE2} ../tools/ @@ -118,7 +128,6 @@ kill -15 $mPID %ifnarch %{ix86} kill -INT $(cat $VALKEY_DIR/valkey.pid) %endif -) %files %dir %{gem_instdir} @@ -133,6 +142,9 @@ kill -INT $(cat $VALKEY_DIR/valkey.pid) %doc %{gem_instdir}/README.rdoc %changelog +* Mon Dec 29 2025 Mamoru TASAKA - 1:8.0.3-3 +- Backport upstream fix to support minitest 6 + * Sun Nov 09 2025 Mamoru TASAKA - 1:8.0.3-2 - Backport upstream change for testsuite removal for new benchmark gem in ruby4_0 From 3c62d5d7aac58a840598f29a7958c76fc8813dd5 Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Tue, 30 Dec 2025 17:23:06 +0900 Subject: [PATCH 8/8] update minitest 6 patch --- ...t-pr56202-minitest6-rescue-loaderror.patch | 12 +++++++++ rubygem-activesupport-pr56202-minitest6.patch | 26 +++++++++++++++++++ rubygem-activesupport.spec | 8 +++++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 rubygem-activesupport-pr56202-minitest6-rescue-loaderror.patch diff --git a/rubygem-activesupport-pr56202-minitest6-rescue-loaderror.patch b/rubygem-activesupport-pr56202-minitest6-rescue-loaderror.patch new file mode 100644 index 0000000..d755a4e --- /dev/null +++ b/rubygem-activesupport-pr56202-minitest6-rescue-loaderror.patch @@ -0,0 +1,12 @@ +--- activesupport-8.0.3/lib/active_support/testing/autorun.rb.orig 2025-12-30 16:47:16.780346179 +0900 ++++ activesupport-8.0.3/lib/active_support/testing/autorun.rb 2025-12-30 16:52:01.482400639 +0900 +@@ -8,5 +8,8 @@ require "minitest" + # used in some cases. This conditional can probably go after the bump + # is complete? ... but could still fail for developers working w/ + # multiple versions installed. +-Minitest.load :rails if Minitest.respond_to? :load ++begin ++ Minitest.load :rails if Minitest.respond_to? :load ++rescue LoadError ++end + Minitest.autorun diff --git a/rubygem-activesupport-pr56202-minitest6.patch b/rubygem-activesupport-pr56202-minitest6.patch index 1e01666..00209d5 100644 --- a/rubygem-activesupport-pr56202-minitest6.patch +++ b/rubygem-activesupport-pr56202-minitest6.patch @@ -1,3 +1,29 @@ +From 9da4460ad0e71e5c3de32566ffbc302674b1f76e Mon Sep 17 00:00:00 2001 +From: Ryan Davis +Date: Thu, 20 Nov 2025 12:50:33 -0800 +Subject: [PATCH 1/5] MT6: Load rails plugin + +--- + activesupport/lib/active_support/testing/autorun.rb | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/activesupport/lib/active_support/testing/autorun.rb b/activesupport/lib/active_support/testing/autorun.rb +index d5d5fc7ae8e45..068aac0b487e0 100644 +--- a/activesupport/lib/active_support/testing/autorun.rb ++++ b/activesupport/lib/active_support/testing/autorun.rb +@@ -2,4 +2,11 @@ + + require "minitest" + ++## ++# I shouldn't need this respond_to check but some tests are running ++# sub-process tests in an unbundled environment, causing MT5 to be ++# used in some cases. This conditional can probably go after the bump ++# is complete? ... but could still fail for developers working w/ ++# multiple versions installed. ++Minitest.load :rails if Minitest.respond_to? :load + Minitest.autorun + From 831f0f96d0f9c132b28d3fa22ab82806115747b0 Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Thu, 20 Nov 2025 14:16:51 -0800 diff --git a/rubygem-activesupport.spec b/rubygem-activesupport.spec index fa35ad4..537f06a 100644 --- a/rubygem-activesupport.spec +++ b/rubygem-activesupport.spec @@ -5,7 +5,7 @@ Name: rubygem-%{gem_name} Epoch: 1 Version: 8.0.3 -Release: 3%{?dist} +Release: 4%{?dist} Summary: A support libraries and Ruby core extensions extracted from the Rails framework License: MIT URL: https://rubyonrails.org @@ -22,6 +22,8 @@ Patch1: rubygem-activesupport-8.0.3-Always-pass-default-precision-to-BigDecimal- # Support minitest 6 # https://github.com/rails/rails/pull/56202/ Patch2: rubygem-activesupport-pr56202-minitest6.patch +# We don't always install railties with activesupport, so rescue this +Patch3: rubygem-activesupport-pr56202-minitest6-rescue-loaderror.patch # Ruby package has just soft dependency on rubygem(json), while # ActiveSupport always requires it. @@ -76,6 +78,7 @@ Documentation for %{name}. %patch 1 -p2 %patch 2 -p2 +%patch 3 -p1 # lib/active_support/testing/method_call_assertions.rb # always needs minitest/mock @@ -142,6 +145,9 @@ kill -INT $(cat $VALKEY_DIR/valkey.pid) %doc %{gem_instdir}/README.rdoc %changelog +* Tue Dec 30 2025 Mamoru TASAKA - 1:8.0.3-4 +- Update minitest 6 patch, and rescue when railties is not installed + * Mon Dec 29 2025 Mamoru TASAKA - 1:8.0.3-3 - Backport upstream fix to support minitest 6