Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion core/kernel/singleton_method_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require_relative '../../spec_helper'

describe "Kernel#singleton_method" do
it "find a method defined on the singleton class" do
it "finds a method defined on the singleton class" do
obj = Object.new
def obj.foo; end
obj.singleton_method(:foo).should be_an_instance_of(Method)
Expand Down Expand Up @@ -38,4 +38,48 @@ def foo
e.class.should == NameError
}
end

ruby_bug "#20620", ""..."3.4" do
it "finds a method defined in a module included in the singleton class" do
m = Module.new do
def foo
:foo
end
end

obj = Object.new
obj.singleton_class.include(m)

obj.singleton_method(:foo).should be_an_instance_of(Method)
obj.singleton_method(:foo).call.should == :foo
end

it "finds a method defined in a module prepended in the singleton class" do
m = Module.new do
def foo
:foo
end
end

obj = Object.new
obj.singleton_class.prepend(m)

obj.singleton_method(:foo).should be_an_instance_of(Method)
obj.singleton_method(:foo).call.should == :foo
end

it "finds a method defined in a module that an object is extended with" do
m = Module.new do
def foo
:foo
end
end

obj = Object.new
obj.extend(m)

obj.singleton_method(:foo).should be_an_instance_of(Method)
obj.singleton_method(:foo).call.should == :foo
end
end
end