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:
parent
498b6f4776
commit
0f663b2449
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user