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
 | 
