diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-08-10 17:08:37 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-08-10 17:08:37 +0000 |
commit | 40270906824a981652719c5e614c2cf4d1c234b0 (patch) | |
tree | 0a3c3021b0a3106d808455e1b15b918206abb2cc | |
parent | 3b90cf70d17b5441a83b7ccb1aa0ff2e8b2f5bbc (diff) |
merge revision(s) 51213: [Backport #11344]
* 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]
* lib/timeout.rb (ExitException): leave Timeout::ExitException as an
alias of Timeout::Error for backward compatibility in stable branch.
[ruby-dev:49179] [Bug #11344]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@51523 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | lib/timeout.rb | 5 | ||||
-rw-r--r-- | test/test_timeout.rb | 23 | ||||
-rw-r--r-- | version.h | 2 |
4 files changed, 35 insertions, 7 deletions
@@ -1,3 +1,15 @@ +Tue Aug 11 01:51:53 2015 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org> + + * lib/timeout.rb (ExitException): leave Timeout::ExitException as an + alias of Timeout::Error for backward compatibility in stable branch. + [ruby-dev:49179] [Bug #11344] + +Tue Aug 11 01:51:53 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] + Tue Aug 11 01:37:28 2015 Kazuhiro NISHIYAMA <zn@mbf.nifty.com> * test/net/http/test_httpresponse.rb diff --git a/lib/timeout.rb b/lib/timeout.rb index fec7b9428c..123f600ccb 100644 --- a/lib/timeout.rb +++ b/lib/timeout.rb @@ -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) @@ -46,6 +44,7 @@ module Timeout self end end + ExitException = Error # :stopdoc: THIS_FILE = /\A#{Regexp.quote(__FILE__)}:/o @@ -101,7 +100,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} diff --git a/test/test_timeout.rb b/test/test_timeout.rb index e71a09f22c..e4eba7f902 100644 --- a/test/test_timeout.rb +++ b/test/test_timeout.rb @@ -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 @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.2.3" #define RUBY_RELEASE_DATE "2015-08-11" -#define RUBY_PATCHLEVEL 155 +#define RUBY_PATCHLEVEL 156 #define RUBY_RELEASE_YEAR 2015 #define RUBY_RELEASE_MONTH 8 |