summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2022-03-09 14:57:49 -0800
committerJeremy Evans <code@jeremyevans.net>2022-03-29 12:10:13 -0700
commit173a6b6a802d80b8cf200308fd3653832b700b1c (patch)
tree259a61999a721d865b899a329cbfa678a32dade8 /test/ruby
parentf3b58e1d38dff2fe69c3f5f858a18fd1b4b936eb (diff)
Make define_singleton_method always define a public method
In very unlikely cases, it could previously define a non-public method starting in Ruby 2.1. Fixes [Bug #18561]
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5636
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_method.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb
index caf8bebd35..83e499913a 100644
--- a/test/ruby/test_method.rb
+++ b/test/ruby/test_method.rb
@@ -323,6 +323,17 @@ class TestMethod < Test::Unit::TestCase
assert_equal(:foo, o.foo)
end
+ PUBLIC_SINGLETON_TEST = Object.new
+ class << PUBLIC_SINGLETON_TEST
+ private
+ PUBLIC_SINGLETON_TEST.define_singleton_method(:dsm){}
+ def PUBLIC_SINGLETON_TEST.def; end
+ end
+ def test_define_singleton_method_public
+ assert_equal(true, PUBLIC_SINGLETON_TEST.method(:dsm).public?)
+ assert_equal(true, PUBLIC_SINGLETON_TEST.method(:def).public?)
+ end
+
def test_define_singleton_method_no_proc
o = Object.new
assert_raise(ArgumentError) {