summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-01-28 11:45:21 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-01-28 11:45:21 +0000
commit2a4c87dc31b3774b8f8f2ab7b74f6d864f41a804 (patch)
tree7ebced0774e05f5a00f78f93d94e15c5d7b202e1 /spec
parent2210709b79222ecd2d9758f7316fdbd7c068ea84 (diff)
Add refinements support to method/instance_method.
[Fix GH-2034] From: manga_osyo <manga.osyo@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66935 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec')
-rw-r--r--spec/ruby/core/module/refine_spec.rb74
1 files changed, 66 insertions, 8 deletions
diff --git a/spec/ruby/core/module/refine_spec.rb b/spec/ruby/core/module/refine_spec.rb
index 662d49205d..42b2b64331 100644
--- a/spec/ruby/core/module/refine_spec.rb
+++ b/spec/ruby/core/module/refine_spec.rb
@@ -526,20 +526,78 @@ describe "Module#refine" do
result.should == "hello from refinement"
end
- it "is not honored by Kernel#method" do
- klass = Class.new
- refinement = Module.new do
- refine klass do
- def foo; end
+ ruby_version_is "" ... "2.7" do
+ it "is not honored by Kernel#method" do
+ klass = Class.new
+ refinement = Module.new do
+ refine klass do
+ def foo; end
+ end
end
+
+ -> {
+ Module.new do
+ using refinement
+ klass.new.method(:foo)
+ end
+ }.should raise_error(NameError, /undefined method `foo'/)
end
+ end
- -> {
+ ruby_version_is "2.7" do
+ it "is honored by Kernel#method" do
+ klass = Class.new
+ refinement = Module.new do
+ refine klass do
+ def foo; end
+ end
+ end
+
+ result = nil
Module.new do
using refinement
- klass.new.method(:foo)
+ result = klass.new.method(:foo).class
end
- }.should raise_error(NameError, /undefined method `foo'/)
+
+ result.should == Method
+ end
+ end
+
+ ruby_version_is "" ... "2.7" do
+ it "is not honored by Kernel#instance_method" do
+ klass = Class.new
+ refinement = Module.new do
+ refine klass do
+ def foo; end
+ end
+ end
+
+ -> {
+ Module.new do
+ using refinement
+ klass.instance_method(:foo)
+ end
+ }.should raise_error(NameError, /undefined method `foo'/)
+ end
+ end
+
+ ruby_version_is "2.7" do
+ it "is honored by Kernel#method" do
+ klass = Class.new
+ refinement = Module.new do
+ refine klass do
+ def foo; end
+ end
+ end
+
+ result = nil
+ Module.new do
+ using refinement
+ result = klass.instance_method(:foo).class
+ end
+
+ result.should == UnboundMethod
+ end
end
ruby_version_is "" ... "2.6" do