Skip to content

Commit

Permalink
Merge pull request #39 from jjb/test-nested-exception-identity
Browse files Browse the repository at this point in the history
nested exception tests for discussion
  • Loading branch information
hsbt authored Nov 7, 2023
2 parents 54835ea + 3e42aa4 commit f31321c
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions test/test_timeout.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,42 @@ def test_nested_timeout
assert_nil a
end

class MyNewErrorOuter < StandardError; end
class MyNewErrorInner < StandardError; end

# DOES NOT fail with
# - raise new(message) if exc.equal?(e)
# + raise new(message) if exc.class == e.class
def test_nested_timeout_error_identity
begin
Timeout.timeout(0.1, MyNewErrorOuter) {
Timeout.timeout(1, MyNewErrorInner) {
nil while true
}
}
rescue => e
assert e.class == MyNewErrorOuter
end
end

# DOES fail with
# - raise new(message) if exc.equal?(e)
# + raise new(message) if exc.class == e.class
def test_nested_timeout_which_error_bubbles_up
raised_exception = nil
begin
Timeout.timeout(0.1) {
Timeout.timeout(1) {
raise Timeout::ExitException.new("inner message")
}
}
rescue Exception => e
raised_exception = e
end

assert_equal 'inner message', e.message
end

def test_cannot_convert_into_time_interval
bug3168 = '[ruby-dev:41010]'
def (n = Object.new).zero?; false; end
Expand Down

0 comments on commit f31321c

Please sign in to comment.