[macruby-changes] [1456] MacRuby/branches/experimental/spec/frozen/core/thread/shared/exit.rb

source_changes at macosforge.org source_changes at macosforge.org
Wed Apr 22 15:10:16 PDT 2009


Revision: 1456
          http://trac.macosforge.org/projects/ruby/changeset/1456
Author:   eloy.de.enige at gmail.com
Date:     2009-04-22 15:10:15 -0700 (Wed, 22 Apr 2009)
Log Message:
-----------
Thread#exit runs nested ensure clauses.

Modified Paths:
--------------
    MacRuby/branches/experimental/spec/frozen/core/thread/shared/exit.rb

Modified: MacRuby/branches/experimental/spec/frozen/core/thread/shared/exit.rb
===================================================================
--- MacRuby/branches/experimental/spec/frozen/core/thread/shared/exit.rb	2009-04-22 22:10:05 UTC (rev 1455)
+++ MacRuby/branches/experimental/spec/frozen/core/thread/shared/exit.rb	2009-04-22 22:10:15 UTC (rev 1456)
@@ -28,6 +28,28 @@
     thread.join
     ScratchPad.recorded.should == :in_ensure_clause
   end
+
+  it "runs nested ensure clauses" do
+    ScratchPad.record []
+    outer = Thread.new do
+      begin
+        inner = Thread.new do
+          begin
+          ensure
+            ScratchPad << :inner_ensure_clause
+          end
+        end
+        Thread.current.send(@method)
+      ensure
+        ScratchPad << :outer_ensure_clause
+        inner.send(@method)
+        inner.join
+      end
+    end
+    outer.join
+    ScratchPad.recorded.should include(:inner_ensure_clause)
+    ScratchPad.recorded.should include(:outer_ensure_clause)
+  end
   
   it "does not set $!" do
     thread = ThreadSpecs.dying_thread_ensures(@method) { ScratchPad.record $! }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090422/6d3ef0bb/attachment.html>


More information about the macruby-changes mailing list