From 2621b441816ae7d737445383354ede909e3de55d Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Wed, 22 Apr 2026 23:47:51 +0900 Subject: [PATCH 1/3] Use upstream PR for patches --- ...k-3.0.2-ruby34-string-literal-frozen.patch | 33 ------------ ...ck-3.0.2-testsuite-ruby34-formatting.patch | 12 ----- ...8-3.0.2-ruby34-string-literal-frozen.patch | 50 +++++++++++++++++++ ...38-3.0.2-testsuite-ruby34-formatting.patch | 26 ++++++++++ rubygem-flexmock.spec | 11 ++-- 5 files changed, 84 insertions(+), 48 deletions(-) delete mode 100644 flexmock-3.0.2-ruby34-string-literal-frozen.patch delete mode 100644 flexmock-3.0.2-testsuite-ruby34-formatting.patch create mode 100644 flexmock-pr38-3.0.2-ruby34-string-literal-frozen.patch create mode 100644 flexmock-pr38-3.0.2-testsuite-ruby34-formatting.patch diff --git a/flexmock-3.0.2-ruby34-string-literal-frozen.patch b/flexmock-3.0.2-ruby34-string-literal-frozen.patch deleted file mode 100644 index 8f12f6a..0000000 --- a/flexmock-3.0.2-ruby34-string-literal-frozen.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff -urp '--exclude=*~' flexmock-3.0.2.orig/lib/flexmock/spy_describers.rb flexmock-3.0.2/lib/flexmock/spy_describers.rb ---- flexmock-3.0.2.orig/lib/flexmock/spy_describers.rb 2025-08-13 16:49:42.102930421 +0900 -+++ flexmock-3.0.2/lib/flexmock/spy_describers.rb 2025-08-13 16:56:27.493387656 +0900 -@@ -18,7 +18,7 @@ class FlexMock - end - - def describe_spy(spy, sym, args, kw, options, not_clause="") -- result = "expected " -+ result = "expected ".dup - result << FlexMock.format_call(sym, args, kw) - result << " to#{not_clause} be received by " << spy.inspect - result << times_description(options[:times]) -@@ -29,7 +29,7 @@ class FlexMock - end - - def describe_calls(spy) -- result = '' -+ result = ''.dup - if spy.flexmock_calls.empty? - result << "No messages have been received\n" - else -diff -urp '--exclude=*~' flexmock-3.0.2.orig/test/container_methods_test.rb flexmock-3.0.2/test/container_methods_test.rb ---- flexmock-3.0.2.orig/test/container_methods_test.rb 2025-08-13 16:49:41.505249913 +0900 -+++ flexmock-3.0.2/test/container_methods_test.rb 2025-08-13 18:12:33.787388043 +0900 -@@ -112,7 +112,7 @@ class TestFlexmockContainerMethods < Min - end - - def test_stubbing_a_string -- s = "hello" -+ s = "hello".dup - flexmock(:base, s, :length => 2) - assert_equal 2, s.length - end diff --git a/flexmock-3.0.2-testsuite-ruby34-formatting.patch b/flexmock-3.0.2-testsuite-ruby34-formatting.patch deleted file mode 100644 index b37f0dd..0000000 --- a/flexmock-3.0.2-testsuite-ruby34-formatting.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -urp flexmock.orig/test/partial_mock_test.rb flexmock/test/partial_mock_test.rb ---- flexmock.orig/test/partial_mock_test.rb 2024-11-18 15:38:57.625597258 +0900 -+++ flexmock/test/partial_mock_test.rb 2024-11-18 15:44:56.469851634 +0900 -@@ -633,7 +633,7 @@ class TestStubbing < Minitest::Test - exception = assert_raises(NameError) do - obj.mocked_method - end -- assert_match(/undefined method `does_not_exist' for/, exception.message) -+ assert_match(/undefined method [`']does_not_exist' for/, exception.message) - end - - def test_it_checks_whether_mocks_are_forbidden_before_forwarding_the_call diff --git a/flexmock-pr38-3.0.2-ruby34-string-literal-frozen.patch b/flexmock-pr38-3.0.2-ruby34-string-literal-frozen.patch new file mode 100644 index 0000000..702e7ee --- /dev/null +++ b/flexmock-pr38-3.0.2-ruby34-string-literal-frozen.patch @@ -0,0 +1,50 @@ +From ead3616ca6af80144b1f884c2eb9d0fbf9e09dbc Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Wed, 22 Apr 2026 16:57:57 +0900 +Subject: [PATCH 2/2] fix: suppress for literal string being frozen in the + future + +ruby 3.4 emits warnings when trying to modify literal string. +Use unary plus operator to avoid this. + +Part of #37 . +--- + lib/flexmock/spy_describers.rb | 4 ++-- + test/container_methods_test.rb | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/flexmock/spy_describers.rb b/lib/flexmock/spy_describers.rb +index 9e6105f..db7c27a 100644 +--- a/lib/flexmock/spy_describers.rb ++++ b/lib/flexmock/spy_describers.rb +@@ -18,7 +18,7 @@ def describe_spy_negative_expectation(spy, sym, args, kw, options={}) + end + + def describe_spy(spy, sym, args, kw, options, not_clause="") +- result = "expected " ++ result = +"expected " + result << FlexMock.format_call(sym, args, kw) + result << " to#{not_clause} be received by " << spy.inspect + result << times_description(options[:times]) +@@ -29,7 +29,7 @@ def describe_spy(spy, sym, args, kw, options, not_clause="") + end + + def describe_calls(spy) +- result = '' ++ result = +'' + if spy.flexmock_calls.empty? + result << "No messages have been received\n" + else +diff --git a/test/container_methods_test.rb b/test/container_methods_test.rb +index 0c32d80..fca9319 100644 +--- a/test/container_methods_test.rb ++++ b/test/container_methods_test.rb +@@ -113,7 +113,7 @@ def test_stubs_are_auto_verified + end + + def test_stubbing_a_string +- s = "hello" ++ s = +"hello" + flexmock(:base, s, :length => 2) + assert_equal 2, s.length + end diff --git a/flexmock-pr38-3.0.2-testsuite-ruby34-formatting.patch b/flexmock-pr38-3.0.2-testsuite-ruby34-formatting.patch new file mode 100644 index 0000000..4eba40b --- /dev/null +++ b/flexmock-pr38-3.0.2-testsuite-ruby34-formatting.patch @@ -0,0 +1,26 @@ +From e38c5d27a300cc6a7ee458c76dae6e0dcb2db640 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Wed, 22 Apr 2026 16:49:46 +0900 +Subject: [PATCH 1/2] fix ruby3.4 formatting change + +ruby 3.4 changes formatting for some backtrace messages. +Support this using regex. + +Closes #37 . +--- + test/partial_mock_test.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/partial_mock_test.rb b/test/partial_mock_test.rb +index beb8f8f..b0f41d2 100644 +--- a/test/partial_mock_test.rb ++++ b/test/partial_mock_test.rb +@@ -634,7 +634,7 @@ def test_partial_mocks_leaves_NoMethodError_exceptions_raised_by_the_original_me + exception = assert_raises(NameError) do + obj.mocked_method + end +- assert_match(/undefined method `does_not_exist' for/, exception.message) ++ assert_match(/undefined method [`']does_not_exist' for/, exception.message) + end + + def test_it_checks_whether_mocks_are_forbidden_before_forwarding_the_call diff --git a/rubygem-flexmock.spec b/rubygem-flexmock.spec index 07adf5a..1be27d7 100644 --- a/rubygem-flexmock.spec +++ b/rubygem-flexmock.spec @@ -3,17 +3,19 @@ Summary: Mock object library for ruby Name: rubygem-%{gem_name} Version: 3.0.2 -Release: 2%{?dist} +Release: 3%{?dist} License: MIT URL: https://github.com/doudou/flexmock Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem Source1: %{gem_name}-%{version}-test-missing-files.tar.gz # Source1 is created fron Source2 Source2: flexmock-create-missing-test-files.sh +# https://github.com/doudou/flexmock/pull/38/changes/e38c5d27a300cc6a7ee458c76dae6e0dcb2db640 # make testsuite compatible for ruby34 formatting change -Patch0: flexmock-3.0.2-testsuite-ruby34-formatting.patch +Patch0: flexmock-pr38-3.0.2-testsuite-ruby34-formatting.patch +# https://github.com/doudou/flexmock/pull/38/changes/ead3616ca6af80144b1f884c2eb9d0fbf9e09dbc # Remove warnings for string literal being frozen in the future -Patch1: flexmock-3.0.2-ruby34-string-literal-frozen.patch +Patch1: flexmock-pr38-3.0.2-ruby34-string-literal-frozen.patch Requires: ruby(release) BuildRequires: ruby(release) @@ -101,6 +103,9 @@ popd %{gem_docdir}/ %changelog +* Wed Apr 22 2026 Mamoru TASAKA - 3.0.2-3 +- Use upstream PR for patches + * Sat Jan 17 2026 Fedora Release Engineering - 3.0.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild From b1af41097372978ae5b4f52a483d2e32bc01fc1e Mon Sep 17 00:00:00 2001 From: Mamoru TASAKA Date: Wed, 22 Apr 2026 23:51:03 +0900 Subject: [PATCH 2/3] Backport upstream PR for Minitest 6.0.5 compatibility --- ...r40-fix-minitest-assert_raises-usage.patch | 82 +++++++++++++++++++ rubygem-flexmock.spec | 6 ++ 2 files changed, 88 insertions(+) create mode 100644 flexmock-pr40-fix-minitest-assert_raises-usage.patch diff --git a/flexmock-pr40-fix-minitest-assert_raises-usage.patch b/flexmock-pr40-fix-minitest-assert_raises-usage.patch new file mode 100644 index 0000000..66c2659 --- /dev/null +++ b/flexmock-pr40-fix-minitest-assert_raises-usage.patch @@ -0,0 +1,82 @@ +From bdde505f4c8fd8028f9da2f92505bba12e225635 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Wed, 22 Apr 2026 18:35:52 +0900 +Subject: [PATCH] fix: Use Minitest assert_raises correctly and handle error + message + +Actually +https://github.com/minitest/minitest/blob/v6.0.5/lib/minitest/assertions.rb#L390 +says that `assert_raises` can take an optional "message" (i.e. string) to help +explain failures, so not regex or so to test if assertion message matches it. + +Up to Minitest 6.0.4, when passing regex for `assert_raises` it was simply +ignored, ref: + +https://github.com/minitest/minitest/issues/1068 +https://bugs.ruby-lang.org/issues/22007 + +Now Minitest 6.0.5 explicitly refuses this usage as: +https://github.com/minitest/minitest/commit/6790f86f894637768a1f64cfe50959d2029b65ed + +Closes #39 . +--- + test/based_partials_test.rb | 3 ++- + test/partial_mock_test.rb | 9 ++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/test/based_partials_test.rb b/test/based_partials_test.rb +index b9efcf5..fca2b61 100644 +--- a/test/based_partials_test.rb ++++ b/test/based_partials_test.rb +@@ -46,9 +46,10 @@ def test_based_partials_allow_stubbing_defined_methods + + def test_based_partials_disallow_stubbing_undefined_methods + dog = Dog.new +- assert_raises(NoMethodError, /cannot stub.*wag.*explicitly/) do ++ ex = assert_raises(NoMethodError) do + flexmock(dog).should_receive(:wag => :mock_value) + end ++ assert_match(/Cannot stub.*wag.*explicitly/m, ex.message) + end + + def test_based_partials_allow_explicitly_stubbing_undefined_methods +diff --git a/test/partial_mock_test.rb b/test/partial_mock_test.rb +index beb8f8f..629e12e 100644 +--- a/test/partial_mock_test.rb ++++ b/test/partial_mock_test.rb +@@ -457,9 +457,10 @@ def test_partial_mocks_allow_stubbing_defined_methods_when_using_on + def test_partial_mocks_disallow_stubbing_undefined_methods_when_using_on + dog = Dog.new + flexmock(dog, :on, Dog) +- assert_raises(NoMethodError, /meow.*explicitly/) do ++ ex = assert_raises(NoMethodError) do + dog.should_receive(:meow).and_return(:something) + end ++ assert_match(/meow.*explicitly/m, ex.message) + end + + def test_partial_mocks_properly_detect_methods_defined_through_a_class_hierarchy +@@ -497,9 +498,10 @@ def test_partial_mocks_will_not_require_explicitly_on_a_class_singleton_method_t + def test_based_partial_mocks_require_explicitly_on_a_non_existing_method_of_a_class_singleton + dog = Class.new + FlexMock.partials_are_based = true +- assert_raises(NoMethodError, /bark.*explicitly/) do ++ ex = assert_raises(NoMethodError) do + flexmock(dog).should_receive(:bark).and_return(:grrr) + end ++ assert_match(/bark.*explicitly/m, ex.message) + ensure + FlexMock.partials_are_based = false + end +@@ -511,9 +513,10 @@ def test_partial_mocks_require_explicitly_on_a_class_singleton_method_that_has_b + FlexMock.partials_are_based = true + flexmock(dog).should_receive(:bark).explicitly + flexmock(chiwawa) +- assert_raises(NoMethodError, /bark.*explicitly/) do ++ ex = assert_raises(NoMethodError) do + chiwawa.should_receive(:bark).and_return(:grrr) + end ++ assert_match(/bark.*explicitly/m, ex.message) + ensure + FlexMock.partials_are_based = false + end diff --git a/rubygem-flexmock.spec b/rubygem-flexmock.spec index 1be27d7..ceda515 100644 --- a/rubygem-flexmock.spec +++ b/rubygem-flexmock.spec @@ -16,6 +16,10 @@ Patch0: flexmock-pr38-3.0.2-testsuite-ruby34-formatting.patch # https://github.com/doudou/flexmock/pull/38/changes/ead3616ca6af80144b1f884c2eb9d0fbf9e09dbc # Remove warnings for string literal being frozen in the future Patch1: flexmock-pr38-3.0.2-ruby34-string-literal-frozen.patch +# https://github.com/doudou/flexmock/pull/40 +# Fix assert_raises usage with Minitest 6.0.5 +Patch2: flexmock-pr40-fix-minitest-assert_raises-usage.patch + Requires: ruby(release) BuildRequires: ruby(release) @@ -45,6 +49,7 @@ mv flexmock/test . %patch -P0 -p1 %patch -P1 -p1 +%patch -P2 -p1 find . -name \*.rb | xargs sed -i -e '\@/usr/bin/env@d' find . -name \*.gem -or -name \*.rb -or -name \*.rdoc | xargs chmod 0644 @@ -105,6 +110,7 @@ popd %changelog * Wed Apr 22 2026 Mamoru TASAKA - 3.0.2-3 - Use upstream PR for patches +- Backport upstream PR for Minitest 6.0.5 compatibility * Sat Jan 17 2026 Fedora Release Engineering - 3.0.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild From 6e954eb785d4c65643375f3529b497a7d0a398e6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jul 2026 23:56:51 +0000 Subject: [PATCH 3/3] Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild --- rubygem-flexmock.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygem-flexmock.spec b/rubygem-flexmock.spec index ceda515..01190b7 100644 --- a/rubygem-flexmock.spec +++ b/rubygem-flexmock.spec @@ -3,7 +3,7 @@ Summary: Mock object library for ruby Name: rubygem-%{gem_name} Version: 3.0.2 -Release: 3%{?dist} +Release: 4%{?dist} License: MIT URL: https://github.com/doudou/flexmock Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem @@ -108,6 +108,9 @@ popd %{gem_docdir}/ %changelog +* Thu Jul 16 2026 Fedora Release Engineering - 3.0.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + * Wed Apr 22 2026 Mamoru TASAKA - 3.0.2-3 - Use upstream PR for patches - Backport upstream PR for Minitest 6.0.5 compatibility