diff options
Diffstat (limited to 'spec/rubyspec/core/module/shared/set_visibility.rb')
| -rw-r--r-- | spec/rubyspec/core/module/shared/set_visibility.rb | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/spec/rubyspec/core/module/shared/set_visibility.rb b/spec/rubyspec/core/module/shared/set_visibility.rb deleted file mode 100644 index c39d59e05d..0000000000 --- a/spec/rubyspec/core/module/shared/set_visibility.rb +++ /dev/null @@ -1,135 +0,0 @@ -# -*- encoding: us-ascii -*- - -describe :set_visibility, shared: true do - it "is a private method" do - Module.should have_private_instance_method(@method, false) - end - - describe "without arguments" do - it "sets visibility to following method definitions" do - visibility = @method - mod = Module.new { - send visibility - - def test1() end - def test2() end - } - - mod.should send(:"have_#{@method}_instance_method", :test1, false) - mod.should send(:"have_#{@method}_instance_method", :test2, false) - end - - it "stops setting visibility if the body encounters other visibility setters without arguments" do - visibility = @method - new_visibility = nil - mod = Module.new { - send visibility - new_visibility = [:protected, :private].find {|vis| vis != visibility } - send new_visibility - def test1() end - } - - mod.should send(:"have_#{new_visibility}_instance_method", :test1, false) - end - - it "continues setting visibility if the body encounters other visibility setters with arguments" do - visibility = @method - mod = Module.new { - send visibility - def test1() end - send([:protected, :private].find {|vis| vis != visibility }, :test1) - def test2() end - } - - mod.should send(:"have_#{@method}_instance_method", :test2, false) - end - - it "does not affect module_evaled method definitions when itself is outside the eval" do - visibility = @method - mod = Module.new { - send visibility - - module_eval { def test1() end } - module_eval " def test2() end " - } - - mod.should have_public_instance_method(:test1, false) - mod.should have_public_instance_method(:test2, false) - end - - it "does not affect outside method definitions when itself is inside a module_eval" do - visibility = @method - mod = Module.new { - module_eval { send visibility } - - def test1() end - } - - mod.should have_public_instance_method(:test1, false) - end - - it "affects normally if itself and method definitions are inside a module_eval" do - visibility = @method - mod = Module.new { - module_eval { - send visibility - - def test1() end - } - } - - mod.should send(:"have_#{@method}_instance_method", :test1, false) - end - - it "does not affect method definitions when itself is inside an eval and method definitions are outside" do - visibility = @method - initialized_visibility = [:public, :protected, :private].find {|sym| sym != visibility } - mod = Module.new { - send initialized_visibility - eval visibility.to_s - - def test1() end - } - - mod.should send(:"have_#{initialized_visibility}_instance_method", :test1, false) - end - - it "affects evaled method definitions when itself is outside the eval" do - visibility = @method - mod = Module.new { - send visibility - - eval "def test1() end" - } - - mod.should send(:"have_#{@method}_instance_method", :test1, false) - end - - it "affects normally if itself and following method definitions are inside a eval" do - visibility = @method - mod = Module.new { - eval <<-CODE - #{visibility} - - def test1() end - CODE - } - - mod.should send(:"have_#{@method}_instance_method", :test1, false) - end - - describe "within a closure" do - it "sets the visibility outside the closure" do - visibility = @method - mod = Module.new { - 1.times { - send visibility - } - def test1() end - } - - mod.should send(:"have_#{@method}_instance_method", :test1, false) - end - end - end -end |
