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 1/4] 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 2/4] 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 3/4] 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 4/4] 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