summaryrefslogtreecommitdiff
path: root/test/ruby/test_nomethod_error.rb
diff options
context:
space:
mode:
authorNARUSE, Yui <naruse@airemix.jp>2021-04-02 16:09:09 +0900
committerNARUSE, Yui <naruse@airemix.jp>2021-04-02 16:09:09 +0900
commit6abb8ee711a941b7ad31d21fdb429750f7ea4463 (patch)
treec774899b4069549383a52c7f949b1e64f8e3d648 /test/ruby/test_nomethod_error.rb
parent0315e1e5ca0722f9dffeae70b860c19de303e339 (diff)
merge revision(s) 0a544c0c35f7445d69402d7c53d825384c728017: [Backport #17754]
Fix segmentation fault when `Module#name` returns non string value [Bug #17754] * Add test for NoMethodError#to_s does not segfault * Ensure no segfault even if Module#name is overridden --- error.c | 4 +++- test/ruby/test_nomethod_error.rb | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-)
Diffstat (limited to 'test/ruby/test_nomethod_error.rb')
-rw-r--r--test/ruby/test_nomethod_error.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/ruby/test_nomethod_error.rb b/test/ruby/test_nomethod_error.rb
index 170a6c6c57..8b81052905 100644
--- a/test/ruby/test_nomethod_error.rb
+++ b/test/ruby/test_nomethod_error.rb
@@ -90,4 +90,20 @@ class TestNoMethodError < Test::Unit::TestCase
str.__send__(id)
end
end
+
+ def test_to_s
+ pre = Module.new do
+ def name
+ BasicObject.new
+ end
+ end
+ mod = Module.new
+ mod.singleton_class.prepend(pre)
+
+ err = assert_raise(NoMethodError) do
+ mod.this_method_does_not_exist
+ end
+
+ assert_match(/undefined method.+this_method_does_not_exist.+for.+Module/, err.to_s)
+ end
end