mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
44 lines
1.5 KiB
Ruby
44 lines
1.5 KiB
Ruby
require_relative '../../spec_helper'
|
|
require_relative 'fixtures/classes'
|
|
|
|
describe "main#public" do
|
|
after :each do
|
|
Object.send(:private, :main_private_method)
|
|
Object.send(:private, :main_private_method2)
|
|
end
|
|
|
|
context "when single argument is passed and it is not an array" do
|
|
it "sets the visibility of the given methods to public" do
|
|
eval "public :main_private_method", TOPLEVEL_BINDING
|
|
Object.should_not have_private_method(:main_private_method)
|
|
end
|
|
end
|
|
|
|
context "when multiple arguments are passed" do
|
|
it "sets the visibility of the given methods to public" do
|
|
eval "public :main_private_method, :main_private_method2", TOPLEVEL_BINDING
|
|
Object.should_not have_private_method(:main_private_method)
|
|
Object.should_not have_private_method(:main_private_method2)
|
|
end
|
|
end
|
|
|
|
ruby_version_is "3.0" do
|
|
context "when single argument is passed and is an array" do
|
|
it "sets the visibility of the given methods to public" do
|
|
eval "public [:main_private_method, :main_private_method2]", TOPLEVEL_BINDING
|
|
Object.should_not have_private_method(:main_private_method)
|
|
Object.should_not have_private_method(:main_private_method2)
|
|
end
|
|
end
|
|
end
|
|
|
|
it "returns Object" do
|
|
eval("public :main_private_method", TOPLEVEL_BINDING).should equal(Object)
|
|
end
|
|
|
|
it "raises a NameError when given an undefined name" do
|
|
-> do
|
|
eval "public :main_undefined_method", TOPLEVEL_BINDING
|
|
end.should raise_error(NameError)
|
|
end
|
|
end
|