aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-15 07:28:08 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-11-15 07:28:08 +0000
commit558b9191c0c76d9807f339dae289a62ad7ed4ae8 (patch)
treefbed87b0b070cf04dccb7789607c496d758ec96a /test
parentabd5ba5af2b98d5cfdd947f855669f6e8cc61615 (diff)
downloadruby-558b9191c0c76d9807f339dae289a62ad7ed4ae8.tar.gz
vm_eval.c: UncaughtThrowError
* vm_eval.c (rb_throw_obj): throw UncaughtThrowError instead of ArgumentError. [Feature #10480] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/lib/test/unit/assertions.rb4
-rw-r--r--test/ruby/test_exception.rb11
-rw-r--r--test/ruby/test_fiber.rb2
3 files changed, 11 insertions, 6 deletions
diff --git a/test/lib/test/unit/assertions.rb b/test/lib/test/unit/assertions.rb
index 4ba13a81e0..727c54c9d5 100644
--- a/test/lib/test/unit/assertions.rb
+++ b/test/lib/test/unit/assertions.rb
@@ -223,8 +223,8 @@ module Test
ret = catch(tag) do
begin
yield(tag)
- rescue ArgumentError => e
- raise unless thrown = e.message[/\Auncaught throw (.+)\z/m, 1]
+ rescue UncaughtThrowError => e
+ thrown = e.tag
end
msg = message(msg) {
"Expected #{mu_pp(tag)} to have been thrown"\
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index 4659def1ea..99cacc21f9 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -147,7 +147,7 @@ class TestException < Test::Unit::TestCase
end
def test_catch_throw_noarg
- assert_nothing_raised(ArgumentError) {
+ assert_nothing_raised(UncaughtThrowError) {
result = catch {|obj|
throw obj, :ok
assert(false, "should not reach here")
@@ -157,13 +157,18 @@ class TestException < Test::Unit::TestCase
end
def test_uncaught_throw
- assert_raise_with_message(ArgumentError, /uncaught throw/) {
+ tag = nil
+ e = assert_raise_with_message(UncaughtThrowError, /uncaught throw/) {
catch("foo") {|obj|
- throw obj.dup, :ok
+ tag = obj.dup
+ throw tag, :ok
assert(false, "should not reach here")
}
assert(false, "should not reach here")
}
+ assert_not_nil(tag)
+ assert_same(tag, e.tag)
+ assert_equal(:ok, e.value)
end
def test_catch_throw_in_require
diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb
index 4acfb139e0..7b5ce8190f 100644
--- a/test/ruby/test_fiber.rb
+++ b/test/ruby/test_fiber.rb
@@ -117,7 +117,7 @@ class TestFiber < Test::Unit::TestCase
end
def test_throw
- assert_raise(ArgumentError){
+ assert_raise(UncaughtThrowError){
Fiber.new do
throw :a
end.resume