summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-12-31 14:33:03 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-12-31 19:43:36 +0900
commita580a3757b162b8d1b2b19d91f5c246c7fc5dca8 (patch)
tree71fb9cbc6c1aebc45ca8d7f1d78f671a8441d80c /test
parentee4ead8098703959353cb81647e4d23bc62fa51b (diff)
Split test_name_error.rb
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2800
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_exception.rb127
-rw-r--r--test/ruby/test_name_error.rb130
2 files changed, 130 insertions, 127 deletions
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index 8a60fafa5e..44867d2ce3 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -828,47 +828,6 @@ end.join
assert_in_out_err([], "raise Class.new(RuntimeError), 'foo'", [], /foo\n/)
end
- PrettyObject =
- Class.new(BasicObject) do
- alias object_id __id__
- def pretty_inspect; "`obj'"; end
- alias inspect pretty_inspect
- end
-
- def test_name_error_new_default
- error = NameError.new
- assert_equal("NameError", error.message)
- end
-
- def test_name_error_new_message
- error = NameError.new("Message")
- assert_equal("Message", error.message)
- end
-
- def test_name_error_new_name
- error = NameError.new("Message")
- assert_nil(error.name)
-
- error = NameError.new("Message", :foo)
- assert_equal(:foo, error.name)
- end
-
- def test_name_error_new_receiver
- receiver = Object.new
-
- error = NameError.new
- assert_raise(ArgumentError) {error.receiver}
- assert_equal("NameError", error.message)
-
- error = NameError.new(receiver: receiver)
- assert_equal(["NameError", receiver],
- [error.message, error.receiver])
-
- error = NameError.new("Message", :foo, receiver: receiver)
- assert_equal(["Message", receiver, :foo],
- [error.message, error.receiver, error.name])
- end
-
def test_nomethod_error_new_default
error = NoMethodError.new
assert_equal("NoMethodError", error.message)
@@ -945,92 +904,6 @@ end.join
[error.name, error.args, error.private_call?, error.receiver])
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)
- assert_not_predicate(e, :private_call?)
-
- 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)
- assert_predicate(e, :private_call?)
- 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)
- }
- assert_equal(:foo, e.name)
- assert_same(obj, e.receiver)
- assert_equal(%i[a b c d e f g], e.local_variables.sort)
- end
-
- def test_name_error_info_method_missing
- obj = PrettyObject.new
- def obj.method_missing(*)
- super
- end
-
- e = assert_raise(NoMethodError) {
- obj.foo(1, 2)
- }
- assert_equal(:foo, e.name)
- assert_equal([1, 2], e.args)
- assert_same(obj, e.receiver)
- assert_not_predicate(e, :private_call?)
-
- 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)
- assert_predicate(e, :private_call?)
- end
-
- def test_name_error_info_parent_iseq_mark
- assert_separately(['-', File.join(__dir__, 'bug-11928.rb')], <<-'end;')
- -> {require ARGV[0]}.call
- end;
- end
-
def test_output_string_encoding
# "\x82\xa0" in cp932 is "\u3042" (Japanese hiragana 'a')
# change $stderr to force calling rb_io_write() instead of fwrite()
diff --git a/test/ruby/test_name_error.rb b/test/ruby/test_name_error.rb
new file mode 100644
index 0000000000..102a4a67e8
--- /dev/null
+++ b/test/ruby/test_name_error.rb
@@ -0,0 +1,130 @@
+require 'test/unit'
+
+class TestNameError < Test::Unit::TestCase
+ def test_new_default
+ error = NameError.new
+ assert_equal("NameError", error.message)
+ end
+
+ def test_new_message
+ error = NameError.new("Message")
+ assert_equal("Message", error.message)
+ end
+
+ def test_new_name
+ error = NameError.new("Message")
+ assert_nil(error.name)
+
+ error = NameError.new("Message", :foo)
+ assert_equal(:foo, error.name)
+ end
+
+ def test_new_receiver
+ receiver = Object.new
+
+ error = NameError.new
+ assert_raise(ArgumentError) {error.receiver}
+ assert_equal("NameError", error.message)
+
+ error = NameError.new(receiver: receiver)
+ assert_equal(["NameError", receiver],
+ [error.message, error.receiver])
+
+ error = NameError.new("Message", :foo, receiver: receiver)
+ assert_equal(["Message", receiver, :foo],
+ [error.message, error.receiver, error.name])
+ end
+
+ PrettyObject =
+ Class.new(BasicObject) do
+ alias object_id __id__
+ def pretty_inspect; "`obj'"; end
+ alias inspect pretty_inspect
+ end
+
+ def test_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_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)
+ assert_not_predicate(e, :private_call?)
+
+ 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)
+ assert_predicate(e, :private_call?)
+ end
+
+ def test_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)
+ }
+ assert_equal(:foo, e.name)
+ assert_same(obj, e.receiver)
+ assert_equal(%i[a b c d e f g], e.local_variables.sort)
+ end
+
+ def test_info_method_missing
+ obj = PrettyObject.new
+ def obj.method_missing(*)
+ super
+ end
+
+ e = assert_raise(NoMethodError) {
+ obj.foo(1, 2)
+ }
+ assert_equal(:foo, e.name)
+ assert_equal([1, 2], e.args)
+ assert_same(obj, e.receiver)
+ assert_not_predicate(e, :private_call?)
+
+ 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)
+ assert_predicate(e, :private_call?)
+ end
+
+ def test_info_parent_iseq_mark
+ assert_separately(['-', File.join(__dir__, 'bug-11928.rb')], <<-'end;')
+ -> {require ARGV[0]}.call
+ end;
+ end
+end