From 74e5e61849e6062554adbc6887ce435826bcaef2 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 28 Feb 2016 01:39:30 +0000 Subject: test_exception.rb: split test_name_error_info git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_exception.rb | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'test/ruby/test_exception.rb') diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index f3aea58c73..7c0674857a 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -725,42 +725,60 @@ end.join assert_in_out_err([], "raise Class.new(RuntimeError), 'foo'", [], /foo\n/) end - def test_name_error_info - obj = BasicObject.new - class << obj + PrettyObject = + Class.new(BasicObject) do alias object_id __id__ def pretty_inspect; "`obj'"; end + alias inspect pretty_inspect end + + def test_name_error_info_const + obj = PrettyObject.new + e = assert_raise(NameError) { obj.instance_eval("Object") } assert_equal(:Object, e.name) + e = assert_raise(NameError) { BasicObject::X } assert_same(BasicObject, e.receiver) + assert_equal(:X, e.name) + end + + def test_name_error_info_method + obj = PrettyObject.new + e = assert_raise(NameError) { obj.instance_eval {foo} } assert_equal(:foo, e.name) assert_same(obj, e.receiver) + e = assert_raise(NoMethodError) { obj.foo(1, 2) } assert_equal(:foo, e.name) assert_equal([1, 2], e.args) assert_same(obj, e.receiver) + e = assert_raise(NoMethodError) { obj.instance_eval {foo(1, 2)} } assert_equal(:foo, e.name) assert_equal([1, 2], e.args) assert_same(obj, e.receiver) + end + + def test_name_error_info_local_variables + obj = PrettyObject.new def obj.test(a, b=nil, *c, &d) e = a 1.times {|f| g = foo; g} e end + e = assert_raise(NameError) { obj.test(3) } -- cgit v1.2.3