This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
require 'em_test_helper'
|
||||
|
||||
class TestSomeExceptions < Test::Unit::TestCase
|
||||
class DoomedConnectionError < StandardError
|
||||
end
|
||||
class DoomedConnection < EventMachine::Connection
|
||||
def unbind
|
||||
raise DoomedConnectionError
|
||||
end
|
||||
end
|
||||
|
||||
# Read the commentary in EM#run.
|
||||
# This test exercises the ensure block in #run that makes sure
|
||||
# EM#release_machine gets called even if an exception is
|
||||
# thrown within the user code. Without the ensured call to release_machine,
|
||||
# the second call to EM#run will fail with a C++ exception
|
||||
# because the machine wasn't cleaned up properly.
|
||||
|
||||
def test_a
|
||||
assert_raises(RuntimeError) {
|
||||
EM.run {
|
||||
raise "some exception"
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def test_b
|
||||
assert_raises(RuntimeError) {
|
||||
EM.run {
|
||||
raise "some exception"
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
def test_exception_on_unbind
|
||||
assert_raises(DoomedConnectionError) {
|
||||
EM.run {
|
||||
EM.connect("localhost", 8888, DoomedConnection)
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user