70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require "testing_env" | ||
|  | require "keg" | ||
|  | require "stringio" | ||
|  | 
 | ||
|  | class OSMacLinkTests < Homebrew::TestCase | ||
|  |   include FileUtils | ||
|  | 
 | ||
|  |   def setup | ||
|  |     keg = HOMEBREW_CELLAR.join("foo", "1.0") | ||
|  |     keg.join("bin").mkpath | ||
|  | 
 | ||
|  |     %w[hiworld helloworld goodbye_cruel_world].each do |file| | ||
|  |       touch keg.join("bin", file) | ||
|  |     end | ||
|  | 
 | ||
|  |     @keg = Keg.new(keg) | ||
|  |     @dst = HOMEBREW_PREFIX.join("bin", "helloworld") | ||
|  |     @nonexistent = Pathname.new("/some/nonexistent/path") | ||
|  | 
 | ||
|  |     @mode = OpenStruct.new | ||
|  | 
 | ||
|  |     @old_stdout = $stdout | ||
|  |     $stdout = StringIO.new | ||
|  | 
 | ||
|  |     mkpath HOMEBREW_PREFIX/"bin" | ||
|  |     mkpath HOMEBREW_PREFIX/"lib" | ||
|  |   end | ||
|  | 
 | ||
|  |   def teardown | ||
|  |     @keg.unlink | ||
|  |     @keg.uninstall | ||
|  | 
 | ||
|  |     $stdout = @old_stdout | ||
|  | 
 | ||
|  |     rmtree HOMEBREW_PREFIX/"bin" | ||
|  |     rmtree HOMEBREW_PREFIX/"lib" | ||
|  |   end | ||
|  | 
 | ||
|  |   def test_mach_o_files_skips_hardlinks | ||
|  |     a = HOMEBREW_CELLAR/"a/1.0" | ||
|  |     (a/"lib").mkpath | ||
|  |     FileUtils.cp dylib_path("i386"), a/"lib/i386.dylib" | ||
|  |     FileUtils.ln a/"lib/i386.dylib", a/"lib/i386_link.dylib" | ||
|  | 
 | ||
|  |     keg = Keg.new(a) | ||
|  |     keg.link | ||
|  | 
 | ||
|  |     assert_equal 1, keg.mach_o_files.size | ||
|  |   ensure | ||
|  |     keg.unlink | ||
|  |     keg.uninstall | ||
|  |   end | ||
|  | 
 | ||
|  |   def test_mach_o_files_isnt_confused_by_symlinks | ||
|  |     a = HOMEBREW_CELLAR/"a/1.0" | ||
|  |     (a/"lib").mkpath | ||
|  |     FileUtils.cp dylib_path("i386"), a/"lib/i386.dylib" | ||
|  |     FileUtils.ln a/"lib/i386.dylib", a/"lib/i386_link.dylib" | ||
|  |     FileUtils.ln_s a/"lib/i386.dylib", a/"lib/1.dylib" | ||
|  | 
 | ||
|  |     keg = Keg.new(a) | ||
|  |     keg.link | ||
|  | 
 | ||
|  |     assert_equal 1, keg.mach_o_files.size | ||
|  |   ensure | ||
|  |     keg.unlink | ||
|  |     keg.uninstall | ||
|  |   end | ||
|  | end |