Update to 3.12.1

This commit is contained in:
wk333 2023-11-15 19:28:59 +08:00
parent 2546c2544e
commit 0f31abb0f9
6 changed files with 5 additions and 103 deletions

View File

@ -1,99 +0,0 @@
From 947d86e4fb8deeb1b7e4ca11b367de38e2f40b7a Mon Sep 17 00:00:00 2001
From: wang--ge <wang__ge@126.com>
Date: Thu, 5 Jan 2023 18:01:18 +0800
Subject: [PATCH] fix thread dead lock error
---
lib/rspec/support/reentrant_mutex.rb | 15 ++++---
spec/rspec/support/reentrant_mutex_spec.rb | 46 +++++++++++-----------
2 files changed, 33 insertions(+), 28 deletions(-)
diff --git a/lib/rspec/support/reentrant_mutex.rb b/lib/rspec/support/reentrant_mutex.rb
index 55fbf89..2dc7427 100644
--- a/lib/rspec/support/reentrant_mutex.rb
+++ b/lib/rspec/support/reentrant_mutex.rb
@@ -31,16 +31,21 @@ module RSpec
# depends on `owned?` that was introduced in Ruby 2.0, so both should work for Ruby 2.x.
if RUBY_VERSION.to_f >= 3.0
def enter
- @mutex.lock unless @mutex.owned?
+ @mutex.lock if @owner != Thread.current
+ @owner = Thread.current
+ #@mutex.lock unless @mutex.owned?
@count += 1
end
def exit
- unless @mutex.owned?
- raise ThreadError, "Attempt to unlock a mutex which is locked by another thread/fiber"
- end
+ #unless @mutex.owned?
+ # raise ThreadError, "Attempt to unlock a mutex which is locked by another thread/fiber"
+ #end
@count -= 1
- @mutex.unlock if @count == 0
+ return unless @count == 0
+ @owner = nil
+ @mutex.unlock
+ #@mutex.unlock if @count == 0
end
else
def enter
diff --git a/spec/rspec/support/reentrant_mutex_spec.rb b/spec/rspec/support/reentrant_mutex_spec.rb
index 9bef54e..7194d7b 100644
--- a/spec/rspec/support/reentrant_mutex_spec.rb
+++ b/spec/rspec/support/reentrant_mutex_spec.rb
@@ -28,27 +28,27 @@ RSpec.describe RSpec::Support::ReentrantMutex do
order.join_all
end
- if RUBY_VERSION >= '3.0'
- it 'waits when trying to lock from another Fiber' do
- mutex.synchronize do
- ready = false
- f = Fiber.new do
- expect {
- ready = true
- mutex.send(:enter)
- raise 'should reach here: mutex is already locked on different Fiber'
- }.to raise_error(Exception, 'waited correctly')
- end
-
- main_thread = Thread.current
-
- t = Thread.new do
- Thread.pass until ready && main_thread.stop?
- main_thread.raise Exception, 'waited correctly'
- end
- f.resume
- t.join
- end
- end
- end
+ #if RUBY_VERSION >= '3.0'
+ # it 'waits when trying to lock from another Fiber' do
+ # mutex.synchronize do
+ # ready = false
+ # f = Fiber.new do
+ # expect {
+ # ready = true
+ # mutex.send(:enter)
+ # raise 'should reach here: mutex is already locked on different Fiber'
+ # }.to raise_error(Exception, 'waited correctly')
+ # end
+
+ # main_thread = Thread.current
+
+ # t = Thread.new do
+ # Thread.pass until ready && main_thread.stop?
+ # main_thread.raise Exception, 'waited correctly'
+ # end
+ # f.resume
+ # t.join
+ # end
+ # end
+ #end
end
--
2.27.0

Binary file not shown.

BIN
rspec-support-3.12.1.gem Normal file

Binary file not shown.

View File

@ -1,5 +1,5 @@
%global gem_name rspec-support %global gem_name rspec-support
%global mainver 3.12.0 %global mainver 3.12.1
%undefine prever %undefine prever
%global mainrel 1 %global mainrel 1
%global prerpmver %(echo "%{?prever}" | sed -e 's|\\.||g') %global prerpmver %(echo "%{?prever}" | sed -e 's|\\.||g')
@ -7,14 +7,13 @@
%undefine __brp_mangle_shebangs %undefine __brp_mangle_shebangs
Name: rubygem-%{gem_name} Name: rubygem-%{gem_name}
Version: %{mainver} Version: %{mainver}
Release: 2 Release: 1
Summary: Common functionality to Rspec series Summary: Common functionality to Rspec series
License: MIT License: MIT
URL: https://github.com/rspec/rspec-support URL: https://github.com/rspec/rspec-support
Source0: https://rubygems.org/gems/%{gem_name}-%{mainver}%{?prever}.gem Source0: https://rubygems.org/gems/%{gem_name}-%{mainver}%{?prever}.gem
Source1: https://github.com/rspec/%{gem_name}/archive/v%{mainver}.tar.gz Source1: https://github.com/rspec/%{gem_name}/archive/v%{mainver}.tar.gz
# tweak regex for search path # tweak regex for search path
Patch1: 0001-fix-thread-dead-lock-error.patch
Patch100: rubygem-rspec-support-3.2.1-callerfilter-searchpath-regex.patch Patch100: rubygem-rspec-support-3.2.1-callerfilter-searchpath-regex.patch
BuildRequires: rubygems-devel rubygem-simplecov rubygem(did_you_mean) BuildRequires: rubygems-devel rubygem-simplecov rubygem(did_you_mean)
%if 0%{?need_bootstrap_set} < 1 %if 0%{?need_bootstrap_set} < 1
@ -36,7 +35,6 @@ Documentation for %{name}
%prep %prep
%setup -q -T -n %{gem_name}-%{version} -b 1 %setup -q -T -n %{gem_name}-%{version} -b 1
gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec
%patch1 -p1
%patch100 -p1 %patch100 -p1
@ -80,6 +78,9 @@ ruby -rrubygems -Ilib/ -S rspec spec/ || \
%doc %{gem_docdir} %doc %{gem_docdir}
%changelog %changelog
* Wed Nov 15 2023 wangkai <13474090681@163.com> - 3.12.1-1
- Update to 3.12.1
* Wed Jan 18 2023 Ge Wang <wangge20@h-partners.com> - 3.12.0-2 * Wed Jan 18 2023 Ge Wang <wangge20@h-partners.com> - 3.12.0-2
- Restore need_bootstrap_set flag after upgrade - Restore need_bootstrap_set flag after upgrade

Binary file not shown.

BIN
v3.12.1.tar.gz Normal file

Binary file not shown.