Modified: MacRuby/branches/experimental/spec/frozen/core/thread/list_spec.rb (1948 => 1949)
--- MacRuby/branches/experimental/spec/frozen/core/thread/list_spec.rb 2009-06-27 20:36:24 UTC (rev 1948)
+++ MacRuby/branches/experimental/spec/frozen/core/thread/list_spec.rb 2009-06-28 00:28:31 UTC (rev 1949)
@@ -17,6 +17,7 @@
c = Channel.new
t = Thread.new { c.receive }
begin
+ Thread.pass while t.status and t.status != 'sleep'
Thread.list.should include(t)
ensure
c << nil
Modified: MacRuby/branches/experimental/spec/frozen/core/thread/shared/wakeup.rb (1948 => 1949)
--- MacRuby/branches/experimental/spec/frozen/core/thread/shared/wakeup.rb 2009-06-27 20:36:24 UTC (rev 1948)
+++ MacRuby/branches/experimental/spec/frozen/core/thread/shared/wakeup.rb 2009-06-28 00:28:31 UTC (rev 1949)
@@ -40,10 +40,21 @@
end
while(t.status != false) do
- t.send(@method)
+ begin
+ t.send(@method)
+ rescue ThreadError
+ # The thread might die right after.
+ t.status.should == false
+ end
Thread.pass
end
1.should == 1 # test succeeds if we reach here
end
+
+ it "raises a ThreadError when trying to wake up a dead thread" do
+ t = Thread.new { 1 }
+ t.join
+ lambda { t.wakeup }.should raise_error(ThreadError)
+ end
end