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>
|
Fri Jul 10 20:13:05 2015 Naohisa Goto <ngotogenome@gmail.com>
|
||||||
|
|
||||||
* process.c (rb_f_exec): rb_exec_without_timer_thread should be
|
* process.c (rb_f_exec): rb_exec_without_timer_thread should be
|
||||||
|
@ -24,8 +24,6 @@
|
|||||||
module Timeout
|
module Timeout
|
||||||
# Raised by Timeout#timeout when the block times out.
|
# Raised by Timeout#timeout when the block times out.
|
||||||
class Error < RuntimeError
|
class Error < RuntimeError
|
||||||
end
|
|
||||||
class ExitException < ::Exception # :nodoc:
|
|
||||||
attr_reader :thread
|
attr_reader :thread
|
||||||
|
|
||||||
def self.catch(*args)
|
def self.catch(*args)
|
||||||
@ -101,7 +99,7 @@ module Timeout
|
|||||||
bt = e.backtrace
|
bt = e.backtrace
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
bt = ExitException.catch(message, &bl)
|
bt = Error.catch(message, &bl)
|
||||||
end
|
end
|
||||||
rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o
|
rej = /\A#{Regexp.quote(__FILE__)}:#{__LINE__-4}\z/o
|
||||||
bt.reject! {|m| rej =~ m}
|
bt.reject! {|m| rej =~ m}
|
||||||
|
@ -63,9 +63,9 @@ class TestTimeout < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_exit_exception
|
def test_exit_exception
|
||||||
assert_raise_with_message(Timeout::ExitException, "boon") do
|
assert_raise_with_message(Timeout::Error, "boon") do
|
||||||
Timeout.timeout(10, Timeout::ExitException) do
|
Timeout.timeout(10, Timeout::Error) do
|
||||||
raise Timeout::ExitException, "boon"
|
raise Timeout::Error, "boon"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -80,4 +80,21 @@ class TestTimeout < Test::Unit::TestCase
|
|||||||
Timeout.timeout(0.01) {e.next}
|
Timeout.timeout(0.01) {e.next}
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user