[前][次][番号順一覧][スレッド一覧]

ruby-changes:39132

From: nobu <ko1@a...>
Date: Fri, 10 Jul 2015 22:06:36 +0900 (JST)
Subject: [ruby-changes:39132] nobu:r51213 (trunk): timeout.rb: removed and use Timeout::Error

nobu	2015-07-10 22:05:53 +0900 (Fri, 10 Jul 2015)

  New Revision: 51213

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51213

  Log:
    timeout.rb: removed and use Timeout::Error
    
    * lib/timeout.rb (ExitException): removed internal exception class
      and use Timeout::Error instead, as using throw/catch to isolate
      each timeouts now.  [ruby-dev:49179] [Bug #11344]

  Modified files:
    trunk/ChangeLog
    trunk/lib/timeout.rb
    trunk/test/test_timeout.rb
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 51212)
+++ ChangeLog	(revision 51213)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Fri Jul 10 22:05:50 2015  Nobuyoshi Nakada  <nobu@r...>
+
+	* lib/timeout.rb (ExitException): removed internal exception class
+	  and use Timeout::Error instead, as using throw/catch to isolate
+	  each timeouts now.  [ruby-dev:49179] [Bug #11344]
+
 Fri Jul 10 20:13:05 2015  Naohisa Goto  <ngotogenome@g...>
 
 	* process.c (rb_f_exec): rb_exec_without_timer_thread should be
Index: lib/timeout.rb
===================================================================
--- lib/timeout.rb	(revision 51212)
+++ lib/timeout.rb	(revision 51213)
@@ -24,8 +24,6 @@ https://github.com/ruby/ruby/blob/trunk/lib/timeout.rb#L24
 module Timeout
   # Raised by Timeout#timeout when the block times out.
   class Error < RuntimeError
-  end
-  class ExitException < ::Exception # :nodoc:
     attr_reader :thread
 
     def self.catch(*args)
@@ -101,7 +99,7 @@ module Timeout https://github.com/ruby/ruby/blob/trunk/lib/timeout.rb#L99
         bt = e.backtrace
       end
     else
-      bt = ExitException.catch(message, &bl)
+      bt = Error.catch(message, &bl)
     end
     rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o
     bt.reject! {|m| rej =~ m}
Index: test/test_timeout.rb
===================================================================
--- test/test_timeout.rb	(revision 51212)
+++ test/test_timeout.rb	(revision 51213)
@@ -63,9 +63,9 @@ class TestTimeout < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/test_timeout.rb#L63
   end
 
   def test_exit_exception
-    assert_raise_with_message(Timeout::ExitException, "boon") do
-      Timeout.timeout(10, Timeout::ExitException) do
-        raise Timeout::ExitException, "boon"
+    assert_raise_with_message(Timeout::Error, "boon") do
+      Timeout.timeout(10, Timeout::Error) do
+        raise Timeout::Error, "boon"
       end
     end
   end
@@ -80,4 +80,21 @@ class TestTimeout < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/test_timeout.rb#L80
       Timeout.timeout(0.01) {e.next}
     end
   end
+
+  def test_handle_interrupt
+    bug11344 = '[ruby-dev:49179] [Bug #11344]'
+    ok = false
+    assert_raise(Timeout::Error) {
+      Thread.handle_interrupt(Timeout::Error => :never) {
+        Timeout.timeout(0.01) {
+          sleep 0.2
+          ok = true
+          Thread.handle_interrupt(Timeout::Error => :on_blocking) {
+            sleep 0.2
+          }
+        }
+      }
+    }
+    assert(ok, bug11344)
+  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]