summaryrefslogtreecommitdiff
path: root/spec/ruby/core/module/shared
diff options
context:
space:
mode:
authorRadosław Bułat <radek.bulat@gmail.com>2020-11-09 11:25:11 +0100
committerMarc-André Lafortune <github@marc-andre.ca>2020-12-17 12:46:02 -0500
commit81739ad4fdfcc86a769056fec352f27c686fba1b (patch)
treee526231281907efac92ada6c77671952b5cf8b1c /spec/ruby/core/module/shared
parentf7a6b460d5cf3665d3cc682fec34f989b639e7a6 (diff)
Better cooperation between public/protected/private with attr* and alias_method
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3757
Diffstat (limited to 'spec/ruby/core/module/shared')
-rw-r--r--spec/ruby/core/module/shared/set_visibility.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/spec/ruby/core/module/shared/set_visibility.rb b/spec/ruby/core/module/shared/set_visibility.rb
index a04b1a54a0..9f31e230ca 100644
--- a/spec/ruby/core/module/shared/set_visibility.rb
+++ b/spec/ruby/core/module/shared/set_visibility.rb
@@ -6,6 +6,40 @@ describe :set_visibility, shared: true do
end
describe "with argument" do
+ describe "one or more arguments" do
+ it "sets visibility of given method names" do
+ visibility = @method
+ old_visibility = [:protected, :private].find {|vis| vis != visibility }
+
+ mod = Module.new {
+ send old_visibility
+ def test1() end
+ def test2() end
+ send visibility, :test1, :test2
+ }
+ mod.should send(:"have_#{visibility}_instance_method", :test1, false)
+ mod.should send(:"have_#{visibility}_instance_method", :test2, false)
+ end
+ end
+
+ ruby_version_is "3.0" do
+ describe "array as a single argument" do
+ it "sets visibility of given method names" do
+ visibility = @method
+ old_visibility = [:protected, :private].find {|vis| vis != visibility }
+
+ mod = Module.new {
+ send old_visibility
+ def test1() end
+ def test2() end
+ send visibility, [:test1, :test2]
+ }
+ mod.should send(:"have_#{visibility}_instance_method", :test1, false)
+ mod.should send(:"have_#{visibility}_instance_method", :test2, false)
+ end
+ end
+ end
+
it "does not clone method from the ancestor when setting to the same visibility in a child" do
visibility = @method
parent = Module.new {