summaryrefslogtreecommitdiff
path: root/spec/ruby/core/threadgroup
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/threadgroup')
-rw-r--r--spec/ruby/core/threadgroup/add_spec.rb47
-rw-r--r--spec/ruby/core/threadgroup/default_spec.rb4
-rw-r--r--spec/ruby/core/threadgroup/enclose_spec.rb15
-rw-r--r--spec/ruby/core/threadgroup/enclosed_spec.rb6
-rw-r--r--spec/ruby/core/threadgroup/fixtures/classes.rb6
-rw-r--r--spec/ruby/core/threadgroup/list_spec.rb17
6 files changed, 45 insertions, 50 deletions
diff --git a/spec/ruby/core/threadgroup/add_spec.rb b/spec/ruby/core/threadgroup/add_spec.rb
index 3b88d3460e..2921c1ab22 100644
--- a/spec/ruby/core/threadgroup/add_spec.rb
+++ b/spec/ruby/core/threadgroup/add_spec.rb
@@ -1,36 +1,39 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
+require_relative '../../spec_helper'
describe "ThreadGroup#add" do
before :each do
- @chan1,@chan2 = Channel.new,Channel.new
- @thread = Thread.new { @chan1 << :go; @chan2.receive }
- @chan1.receive
+ @q1, @q2 = Queue.new, Queue.new
+ @thread = Thread.new { @q1 << :go; @q2.pop }
+ @q1.pop
end
after :each do
- @chan2 << :done
+ @q2 << :done
@thread.join
end
- it "adds the given thread to a group and returns self" do
- @thread.group.should_not == nil
+ # This spec randomly kills mspec worker like: https://ci.appveyor.com/project/ruby/ruby/build/9806/job/37tx2atojy96227m
+ # TODO: Investigate the cause or at least print helpful logs, and remove this `platform_is_not` guard.
+ platform_is_not :mingw do
+ it "adds the given thread to a group and returns self" do
+ @thread.group.should_not == nil
- tg = ThreadGroup.new
- tg.add(@thread).should == tg
- @thread.group.should == tg
- tg.list.include?(@thread).should == true
- end
+ tg = ThreadGroup.new
+ tg.add(@thread).should == tg
+ @thread.group.should == tg
+ tg.list.include?(@thread).should == true
+ end
- it "removes itself from any other threadgroup" do
- tg1 = ThreadGroup.new
- tg2 = ThreadGroup.new
+ it "removes itself from any other threadgroup" do
+ tg1 = ThreadGroup.new
+ tg2 = ThreadGroup.new
- tg1.add(@thread)
- @thread.group.should == tg1
- tg2.add(@thread)
- @thread.group.should == tg2
- tg2.list.include?(@thread).should == true
- tg1.list.include?(@thread).should == false
+ tg1.add(@thread)
+ @thread.group.should == tg1
+ tg2.add(@thread)
+ @thread.group.should == tg2
+ tg2.list.include?(@thread).should == true
+ tg1.list.include?(@thread).should == false
+ end
end
end
diff --git a/spec/ruby/core/threadgroup/default_spec.rb b/spec/ruby/core/threadgroup/default_spec.rb
index d72b86ed39..4f57508abf 100644
--- a/spec/ruby/core/threadgroup/default_spec.rb
+++ b/spec/ruby/core/threadgroup/default_spec.rb
@@ -1,8 +1,8 @@
-require File.expand_path('../../../spec_helper', __FILE__)
+require_relative '../../spec_helper'
describe "ThreadGroup::Default" do
it "is a ThreadGroup instance" do
- ThreadGroup::Default.should be_kind_of(ThreadGroup)
+ ThreadGroup::Default.should.is_a?(ThreadGroup)
end
it "is the ThreadGroup of the main thread" do
diff --git a/spec/ruby/core/threadgroup/enclose_spec.rb b/spec/ruby/core/threadgroup/enclose_spec.rb
index 5827ddb6aa..6f703d4ce2 100644
--- a/spec/ruby/core/threadgroup/enclose_spec.rb
+++ b/spec/ruby/core/threadgroup/enclose_spec.rb
@@ -1,15 +1,14 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
+require_relative '../../spec_helper'
describe "ThreadGroup#enclose" do
before :each do
- @chan1,@chan2 = Channel.new,Channel.new
- @thread = Thread.new { @chan1 << :go; @chan2.receive }
- @chan1.receive
+ @q1, @q2 = Queue.new, Queue.new
+ @thread = Thread.new { @q1 << :go; @q2.pop }
+ @q1.pop
end
after :each do
- @chan2 << :done
+ @q2 << :done
@thread.join
end
@@ -18,8 +17,8 @@ describe "ThreadGroup#enclose" do
default_group = @thread.group
thread_group.add(@thread)
thread_group.enclose
- lambda do
+ -> do
default_group.add(@thread)
- end.should raise_error(ThreadError)
+ end.should.raise(ThreadError)
end
end
diff --git a/spec/ruby/core/threadgroup/enclosed_spec.rb b/spec/ruby/core/threadgroup/enclosed_spec.rb
index 2c1c79f24a..cf8a5bb4c6 100644
--- a/spec/ruby/core/threadgroup/enclosed_spec.rb
+++ b/spec/ruby/core/threadgroup/enclosed_spec.rb
@@ -1,14 +1,14 @@
-require File.expand_path('../../../spec_helper', __FILE__)
+require_relative '../../spec_helper'
describe "ThreadGroup#enclosed?" do
it "returns false when a ThreadGroup has not been enclosed (default state)" do
thread_group = ThreadGroup.new
- thread_group.enclosed?.should be_false
+ thread_group.enclosed?.should == false
end
it "returns true when a ThreadGroup is enclosed" do
thread_group = ThreadGroup.new
thread_group.enclose
- thread_group.enclosed?.should be_true
+ thread_group.enclosed?.should == true
end
end
diff --git a/spec/ruby/core/threadgroup/fixtures/classes.rb b/spec/ruby/core/threadgroup/fixtures/classes.rb
deleted file mode 100644
index 7dfe5e92d1..0000000000
--- a/spec/ruby/core/threadgroup/fixtures/classes.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-unless defined? Channel
- require 'thread'
- class Channel < Queue
- alias receive shift
- end
-end
diff --git a/spec/ruby/core/threadgroup/list_spec.rb b/spec/ruby/core/threadgroup/list_spec.rb
index aa7b3f73fa..ef601d75ea 100644
--- a/spec/ruby/core/threadgroup/list_spec.rb
+++ b/spec/ruby/core/threadgroup/list_spec.rb
@@ -1,20 +1,19 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
+require_relative '../../spec_helper'
describe "ThreadGroup#list" do
it "returns the list of threads in the group" do
- chan = Channel.new
- th1 = Thread.new { chan << :go; sleep }
- chan.receive.should == :go
+ q = Queue.new
+ th1 = Thread.new { q << :go; sleep }
+ q.pop.should == :go
tg = ThreadGroup.new
tg.add(th1)
- tg.list.should include(th1)
+ tg.list.should.include?(th1)
- th2 = Thread.new { chan << :go; sleep }
- chan.receive.should == :go
+ th2 = Thread.new { q << :go; sleep }
+ q.pop.should == :go
tg.add(th2)
- (tg.list & [th1, th2]).should include(th1, th2)
+ (tg.list & [th1, th2]).to_set.should == Set[th1, th2]
Thread.pass while th1.status and th1.status != 'sleep'
Thread.pass while th2.status and th2.status != 'sleep'