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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2015-07-10 13:05:53 +00:00
parent 498b6f4776
commit 0f663b2449
3 changed files with 27 additions and 6 deletions

View File

@ -1,3 +1,9 @@
Fri Jul 10 22:05:50 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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@gmail.com>
* process.c (rb_f_exec): rb_exec_without_timer_thread should be

View File

@ -24,8 +24,6 @@
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
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}

View File

@ -63,9 +63,9 @@ class TestTimeout < Test::Unit::TestCase
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
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