diff options
author | Benoit Daloze <[email protected]> | 2022-09-28 18:37:17 +0200 |
---|---|---|
committer | Benoit Daloze <[email protected]> | 2022-09-28 18:37:17 +0200 |
commit | 31cf1bb5256314b69eae92673d3dd5815158ee91 (patch) | |
tree | 5ee049f751426794bfe47d0fa847f5621d3a039d /spec/ruby/core/unboundmethod | |
parent | 5a1ab740fc287df8bf4038f19bd28bbb73e181b6 (diff) |
Update to ruby/spec@1d9d5c6
Diffstat (limited to 'spec/ruby/core/unboundmethod')
-rw-r--r-- | spec/ruby/core/unboundmethod/fixtures/classes.rb | 10 | ||||
-rw-r--r-- | spec/ruby/core/unboundmethod/hash_spec.rb | 7 | ||||
-rw-r--r-- | spec/ruby/core/unboundmethod/super_method_spec.rb | 25 |
3 files changed, 42 insertions, 0 deletions
diff --git a/spec/ruby/core/unboundmethod/fixtures/classes.rb b/spec/ruby/core/unboundmethod/fixtures/classes.rb index 46b1c51669..1f466e39d8 100644 --- a/spec/ruby/core/unboundmethod/fixtures/classes.rb +++ b/spec/ruby/core/unboundmethod/fixtures/classes.rb @@ -84,4 +84,14 @@ module UnboundMethodSpecs class C < B def overridden; end end + + module HashSpecs + class SuperClass + def foo + end + end + + class SubClass < SuperClass + end + end end diff --git a/spec/ruby/core/unboundmethod/hash_spec.rb b/spec/ruby/core/unboundmethod/hash_spec.rb index 12dce0020f..6888675bc1 100644 --- a/spec/ruby/core/unboundmethod/hash_spec.rb +++ b/spec/ruby/core/unboundmethod/hash_spec.rb @@ -12,4 +12,11 @@ describe "UnboundMethod#hash" do to_s, inspect = Array.instance_method(:to_s), Array.instance_method(:inspect) to_s.hash.should == inspect.hash end + + it "equals a hash of the same method in the superclass" do + foo_in_superclass = UnboundMethodSpecs::HashSpecs::SuperClass.instance_method(:foo) + foo = UnboundMethodSpecs::HashSpecs::SubClass.instance_method(:foo) + + foo.hash.should == foo_in_superclass.hash + end end diff --git a/spec/ruby/core/unboundmethod/super_method_spec.rb b/spec/ruby/core/unboundmethod/super_method_spec.rb index c9fa1ec533..5cf96e6fa9 100644 --- a/spec/ruby/core/unboundmethod/super_method_spec.rb +++ b/spec/ruby/core/unboundmethod/super_method_spec.rb @@ -1,5 +1,6 @@ require_relative '../../spec_helper' require_relative 'fixtures/classes' +require_relative '../method/fixtures/classes' describe "UnboundMethod#super_method" do it "returns the method that would be called by super in the method" do @@ -25,4 +26,28 @@ describe "UnboundMethod#super_method" do method.super_method.should == nil end + + # https://github.com/jruby/jruby/issues/7240 + context "after changing an inherited methods visibility" do + ruby_version_is ""..."3.2" do + it "returns the expected super_method" do + method = MethodSpecs::InheritedMethods::C.instance_method(:derp) + method.super_method.owner.should == MethodSpecs::InheritedMethods::A + end + end + + ruby_version_is "3.2" do + it "returns the expected super_method" do + method = MethodSpecs::InheritedMethods::C.instance_method(:derp) + method.super_method.owner.should == MethodSpecs::InheritedMethods::B + end + end + end + + context "after aliasing an inherited method" do + it "returns the expected super_method" do + method = MethodSpecs::InheritedMethods::C.instance_method(:meow) + method.super_method.owner.should == MethodSpecs::InheritedMethods::A + end + end end |