diff options
Diffstat (limited to 'spec/ruby/core/module/private_spec.rb')
-rw-r--r-- | spec/ruby/core/module/private_spec.rb | 64 |
1 files changed, 34 insertions, 30 deletions
diff --git a/spec/ruby/core/module/private_spec.rb b/spec/ruby/core/module/private_spec.rb index 5d85c34855..bf3e86a333 100644 --- a/spec/ruby/core/module/private_spec.rb +++ b/spec/ruby/core/module/private_spec.rb @@ -52,42 +52,46 @@ describe "Module#private" do end.should raise_error(NameError) end - it "only makes the method private in the class it is called on" do - base = Class.new do - def wrapped - 1 + ruby_version_is "2.3" do + ruby_bug "#14604", "2.3"..."2.5.1" do + it "only makes the method private in the class it is called on" do + base = Class.new do + def wrapped + 1 + end + end + + klass = Class.new(base) do + def wrapped + super + 1 + end + private :wrapped + end + + base.new.wrapped.should == 1 + lambda do + klass.new.wrapped + end.should raise_error(NameError) end - end - klass = Class.new(base) do - def wrapped - super + 1 - end - private :wrapped - end - - base.new.wrapped.should == 1 - lambda do - klass.new.wrapped - end.should raise_error(NameError) - end + it "continues to allow a prepended module method to call super" do + wrapper = Module.new do + def wrapped + super + 1 + end + end - it "continues to allow a prepended module method to call super" do - wrapper = Module.new do - def wrapped - super + 1 - end - end + klass = Class.new do + prepend wrapper - klass = Class.new do - prepend wrapper + def wrapped + 1 + end + private :wrapped + end - def wrapped - 1 + klass.new.wrapped.should == 2 end - private :wrapped end - - klass.new.wrapped.should == 2 end end |