mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require_relative '../../spec_helper'
 | |
| require_relative 'fixtures/classes'
 | |
| require_relative 'shared/set_visibility'
 | |
| 
 | |
| describe "Module#public" do
 | |
|   it_behaves_like :set_visibility, :public
 | |
| 
 | |
|   it "on a superclass method calls the redefined method" do
 | |
|     ModuleSpecs::ChildPrivateMethodMadePublic.new.private_method_redefined.should == :after_redefinition
 | |
|   end
 | |
| 
 | |
|   it "makes a private Object instance method public in a new module" do
 | |
|     m = Module.new do
 | |
|       public :module_specs_private_method_on_object
 | |
|     end
 | |
| 
 | |
|     m.should have_public_instance_method(:module_specs_private_method_on_object)
 | |
| 
 | |
|     # Ensure we did not change Object's method
 | |
|     Object.should_not have_public_instance_method(:module_specs_private_method_on_object)
 | |
|   end
 | |
| 
 | |
|   it "makes a private Object instance method public in Kernel" do
 | |
|     Kernel.should have_public_instance_method(
 | |
|                   :module_specs_private_method_on_object_for_kernel_public)
 | |
|     Object.should_not have_public_instance_method(
 | |
|                   :module_specs_private_method_on_object_for_kernel_public)
 | |
|   end
 | |
| 
 | |
|   it "returns self" do
 | |
|     (class << Object.new; self; end).class_eval do
 | |
|       def foo; end
 | |
|       private :foo
 | |
|       public(:foo).should equal(self)
 | |
|       public.should equal(self)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   it "raises a NameError when given an undefined name" do
 | |
|     -> do
 | |
|       Module.new.send(:public, :undefined)
 | |
|     end.should raise_error(NameError)
 | |
|   end
 | |
| end
 | 
