| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "testing_env" | 
					
						
							|  |  |  | require "keg" | 
					
						
							|  |  |  | require "stringio" | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 20:32:51 -05:00
										 |  |  | class LinkTests < Homebrew::TestCase | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |   include FileUtils | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   def setup | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:53 -05:00
										 |  |  |     keg = HOMEBREW_CELLAR.join("foo", "1.0") | 
					
						
							|  |  |  |     keg.join("bin").mkpath | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     %w[hiworld helloworld goodbye_cruel_world].each do |file| | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:53 -05:00
										 |  |  |       touch keg.join("bin", file) | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:53 -05:00
										 |  |  |     @keg = Keg.new(keg) | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     @dst = HOMEBREW_PREFIX.join("bin", "helloworld") | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     @nonexistent = Pathname.new("/some/nonexistent/path") | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     @mode = OpenStruct.new | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |     @old_stdout = $stdout | 
					
						
							|  |  |  |     $stdout = StringIO.new | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     mkpath HOMEBREW_PREFIX/"bin" | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  |     mkpath HOMEBREW_PREFIX/"lib" | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-23 22:00:33 -05:00
										 |  |  |   def teardown | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     @keg.uninstall | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $stdout = @old_stdout | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     rmtree HOMEBREW_PREFIX/"bin" | 
					
						
							|  |  |  |     rmtree HOMEBREW_PREFIX/"lib" | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-09 21:09:02 +08:00
										 |  |  |   def test_empty_installation | 
					
						
							|  |  |  |     %w[.DS_Store INSTALL_RECEIPT.json LICENSE.txt].each do |file| | 
					
						
							|  |  |  |       touch @keg/file | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     assert_predicate @keg, :exist? | 
					
						
							|  |  |  |     assert_predicate @keg, :directory? | 
					
						
							|  |  |  |     refute_predicate @keg, :empty_installation? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     (@keg/"bin").rmtree | 
					
						
							|  |  |  |     assert_predicate @keg, :empty_installation? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   def test_linking_keg | 
					
						
							| 
									
										
										
										
											2012-10-23 17:09:57 -05:00
										 |  |  |     assert_equal 3, @keg.link | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     (HOMEBREW_PREFIX/"bin").children.each { |c| assert_predicate c.readlink, :relative? } | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_unlinking_keg | 
					
						
							|  |  |  |     @keg.link | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     assert_predicate @dst, :symlink? | 
					
						
							| 
									
										
										
										
											2016-05-15 13:07:58 +02:00
										 |  |  |     assert_equal 3, @keg.unlink | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     refute_predicate @dst, :symlink? | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-16 18:06:42 +03:00
										 |  |  |   def test_oldname_opt_record | 
					
						
							|  |  |  |     assert_nil @keg.oldname_opt_record | 
					
						
							|  |  |  |     oldname_opt_record = HOMEBREW_PREFIX/"opt/oldfoo" | 
					
						
							|  |  |  |     oldname_opt_record.make_relative_symlink(HOMEBREW_CELLAR/"foo/1.0") | 
					
						
							|  |  |  |     assert_equal oldname_opt_record, @keg.oldname_opt_record | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_optlink_relink | 
					
						
							|  |  |  |     oldname_opt_record = HOMEBREW_PREFIX/"opt/oldfoo" | 
					
						
							|  |  |  |     oldname_opt_record.make_relative_symlink(HOMEBREW_CELLAR/"foo/1.0") | 
					
						
							|  |  |  |     keg_record = HOMEBREW_CELLAR.join("foo", "2.0") | 
					
						
							|  |  |  |     keg_record.join("bin").mkpath | 
					
						
							|  |  |  |     keg = Keg.new(keg_record) | 
					
						
							|  |  |  |     keg.optlink | 
					
						
							|  |  |  |     assert_equal keg_record, oldname_opt_record.resolved_path | 
					
						
							|  |  |  |     keg.uninstall | 
					
						
							|  |  |  |     refute_predicate oldname_opt_record, :symlink? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_remove_oldname_opt_record | 
					
						
							|  |  |  |     oldname_opt_record = HOMEBREW_PREFIX/"opt/oldfoo" | 
					
						
							|  |  |  |     oldname_opt_record.make_relative_symlink(HOMEBREW_CELLAR/"foo/2.0") | 
					
						
							|  |  |  |     @keg.remove_oldname_opt_record | 
					
						
							|  |  |  |     assert_predicate oldname_opt_record, :symlink? | 
					
						
							|  |  |  |     oldname_opt_record.unlink | 
					
						
							|  |  |  |     oldname_opt_record.make_relative_symlink(HOMEBREW_CELLAR/"foo/1.0") | 
					
						
							|  |  |  |     @keg.remove_oldname_opt_record | 
					
						
							|  |  |  |     refute_predicate oldname_opt_record, :symlink? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   def test_link_dry_run | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     @mode.dry_run = true | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     assert_equal 0, @keg.link(@mode) | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate @keg, :linked? | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |     ["hiworld", "helloworld", "goodbye_cruel_world"].each do |file| | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  |       assert_match "#{HOMEBREW_PREFIX}/bin/#{file}", $stdout.string | 
					
						
							| 
									
										
										
										
											2012-10-23 17:09:57 -05:00
										 |  |  |     end | 
					
						
							|  |  |  |     assert_equal 3, $stdout.string.lines.count | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_linking_fails_when_already_linked | 
					
						
							|  |  |  |     @keg.link | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:53 -05:00
										 |  |  |     assert_raises(Keg::AlreadyLinkedError) { @keg.link } | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_linking_fails_when_files_exist | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     touch @dst | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:53 -05:00
										 |  |  |     assert_raises(Keg::ConflictError) { @keg.link } | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-27 09:35:10 -05:00
										 |  |  |   def test_link_ignores_broken_symlinks_at_target | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     src = @keg.join("bin", "helloworld") | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     @dst.make_symlink(@nonexistent) | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:53 -05:00
										 |  |  |     @keg.link | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     assert_equal src.relative_path_from(@dst.dirname), @dst.readlink | 
					
						
							| 
									
										
										
										
											2014-03-27 09:35:10 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   def test_link_overwrite | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     touch @dst | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     @mode.overwrite = true | 
					
						
							|  |  |  |     assert_equal 3, @keg.link(@mode) | 
					
						
							| 
									
										
										
										
											2014-07-01 09:01:06 -05:00
										 |  |  |     assert_predicate @keg, :linked? | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-27 15:21:17 -07:00
										 |  |  |   def test_link_overwrite_broken_symlinks | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     @dst.make_symlink "nowhere" | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     @mode.overwrite = true | 
					
						
							|  |  |  |     assert_equal 3, @keg.link(@mode) | 
					
						
							| 
									
										
										
										
											2014-07-01 09:01:06 -05:00
										 |  |  |     assert_predicate @keg, :linked? | 
					
						
							| 
									
										
										
										
											2013-04-27 15:21:17 -07:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   def test_link_overwrite_dryrun | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     touch @dst | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     @mode.overwrite = true | 
					
						
							|  |  |  |     @mode.dry_run = true | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 16:27:59 -05:00
										 |  |  |     assert_equal 0, @keg.link(@mode) | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate @keg, :linked? | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |     assert_equal "#{@dst}\n", $stdout.string | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:19 -05:00
										 |  |  |   def test_unlink_prunes_empty_toplevel_directories | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  |     mkpath HOMEBREW_PREFIX/"lib/foo/bar" | 
					
						
							|  |  |  |     mkpath @keg/"lib/foo/bar" | 
					
						
							|  |  |  |     touch @keg/"lib/foo/bar/file1" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate HOMEBREW_PREFIX/"lib/foo", :directory? | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-05 22:04:59 -07:00
										 |  |  |   def test_unlink_ignores_ds_store_when_pruning_empty_dirs | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  |     mkpath HOMEBREW_PREFIX/"lib/foo/bar" | 
					
						
							|  |  |  |     touch HOMEBREW_PREFIX/"lib/foo/.DS_Store" | 
					
						
							|  |  |  |     mkpath @keg/"lib/foo/bar" | 
					
						
							|  |  |  |     touch @keg/"lib/foo/bar/file1" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-11 12:21:03 -05:00
										 |  |  |     refute_predicate HOMEBREW_PREFIX/"lib/foo", :directory? | 
					
						
							|  |  |  |     refute_predicate HOMEBREW_PREFIX/"lib/foo/.DS_Store", :exist? | 
					
						
							| 
									
										
										
										
											2013-08-09 11:29:18 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-06-30 21:47:50 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-01 09:01:06 -05:00
										 |  |  |   def test_linking_creates_opt_link | 
					
						
							|  |  |  |     refute_predicate @keg, :optlinked? | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     assert_predicate @keg, :optlinked? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_unlinking_does_not_remove_opt_link | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     assert_predicate @keg, :optlinked? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-30 21:47:50 -05:00
										 |  |  |   def test_existing_opt_link | 
					
						
							|  |  |  |     @keg.opt_record.make_relative_symlink Pathname.new(@keg) | 
					
						
							|  |  |  |     @keg.optlink | 
					
						
							| 
									
										
										
										
											2014-07-01 09:01:06 -05:00
										 |  |  |     assert_predicate @keg, :optlinked? | 
					
						
							| 
									
										
										
										
											2014-06-30 21:47:50 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_existing_opt_link_directory | 
					
						
							|  |  |  |     @keg.opt_record.mkpath | 
					
						
							|  |  |  |     @keg.optlink | 
					
						
							| 
									
										
										
										
											2014-07-01 09:01:06 -05:00
										 |  |  |     assert_predicate @keg, :optlinked? | 
					
						
							| 
									
										
										
										
											2014-06-30 21:47:50 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_existing_opt_link_file | 
					
						
							|  |  |  |     @keg.opt_record.parent.mkpath | 
					
						
							|  |  |  |     @keg.opt_record.write("foo") | 
					
						
							|  |  |  |     @keg.optlink | 
					
						
							| 
									
										
										
										
											2014-07-01 09:01:06 -05:00
										 |  |  |     assert_predicate @keg, :optlinked? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_linked_keg | 
					
						
							|  |  |  |     refute_predicate @keg, :linked? | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     assert_predicate @keg, :linked? | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     refute_predicate @keg, :linked? | 
					
						
							| 
									
										
										
										
											2014-06-30 21:47:50 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_unlink_preserves_broken_symlink_pointing_outside_the_keg | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     @dst.delete | 
					
						
							|  |  |  |     @dst.make_symlink(@nonexistent) | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     assert_predicate @dst, :symlink? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_unlink_preserves_broken_symlink_pointing_into_the_keg | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     @dst.resolved_path.delete | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     assert_predicate @dst, :symlink? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_unlink_preserves_symlink_pointing_outside_of_keg | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     @dst.delete | 
					
						
							|  |  |  |     @dst.make_symlink(Pathname.new("/bin/sh")) | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     assert_predicate @dst, :symlink? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_unlink_preserves_real_file | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     @dst.delete | 
					
						
							|  |  |  |     touch @dst | 
					
						
							|  |  |  |     @keg.unlink | 
					
						
							|  |  |  |     assert_predicate @dst, :file? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def test_unlink_ignores_nonexistent_file | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     @dst.delete | 
					
						
							| 
									
										
										
										
											2016-05-15 13:07:58 +02:00
										 |  |  |     assert_equal 2, @keg.unlink | 
					
						
							| 
									
										
										
										
											2014-07-03 23:27:54 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-07-12 19:56:58 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_pkgconfig_is_mkpathed | 
					
						
							|  |  |  |     link = HOMEBREW_PREFIX.join("lib", "pkgconfig") | 
					
						
							|  |  |  |     @keg.join("lib", "pkgconfig").mkpath | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     assert_predicate link.lstat, :directory? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-23 16:38:13 +00:00
										 |  |  |   def test_cmake_is_mkpathed | 
					
						
							|  |  |  |     link = HOMEBREW_PREFIX.join("lib", "cmake") | 
					
						
							|  |  |  |     @keg.join("lib", "cmake").mkpath | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  |     assert_predicate link.lstat, :directory? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-07-12 19:56:58 -05:00
										 |  |  |   def test_symlinks_are_linked_directly | 
					
						
							|  |  |  |     link = HOMEBREW_PREFIX.join("lib", "pkgconfig") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @keg.join("lib", "example").mkpath | 
					
						
							|  |  |  |     @keg.join("lib", "pkgconfig").make_symlink "example" | 
					
						
							|  |  |  |     @keg.link | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert_predicate link.resolved_path, :symlink? | 
					
						
							|  |  |  |     assert_predicate link.lstat, :symlink? | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-07-12 19:56:58 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_links_to_symlinks_are_not_removed | 
					
						
							|  |  |  |     a = HOMEBREW_CELLAR.join("a", "1.0") | 
					
						
							|  |  |  |     b = HOMEBREW_CELLAR.join("b", "1.0") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     a.join("lib", "example").mkpath | 
					
						
							|  |  |  |     a.join("lib", "example2").make_symlink "example" | 
					
						
							|  |  |  |     b.join("lib", "example2").mkpath | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-20 17:07:53 -05:00
										 |  |  |     a = Keg.new(a) | 
					
						
							|  |  |  |     b = Keg.new(b) | 
					
						
							|  |  |  |     a.link | 
					
						
							| 
									
										
										
										
											2014-07-12 19:56:58 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     lib = HOMEBREW_PREFIX.join("lib") | 
					
						
							|  |  |  |     assert_equal 2, lib.children.length | 
					
						
							| 
									
										
										
										
											2014-10-20 17:07:53 -05:00
										 |  |  |     assert_raises(Keg::ConflictError) { b.link } | 
					
						
							| 
									
										
										
										
											2014-07-12 19:56:58 -05:00
										 |  |  |     assert_equal 2, lib.children.length | 
					
						
							| 
									
										
										
										
											2014-10-20 17:07:53 -05:00
										 |  |  |   ensure | 
					
						
							|  |  |  |     a.unlink | 
					
						
							|  |  |  |     a.uninstall | 
					
						
							|  |  |  |     b.uninstall | 
					
						
							| 
									
										
										
										
											2014-07-12 19:56:58 -05:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2014-10-20 17:07:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def test_removes_broken_symlinks_that_conflict_with_directories | 
					
						
							|  |  |  |     a = HOMEBREW_CELLAR.join("a", "1.0") | 
					
						
							|  |  |  |     a.join("lib", "foo").mkpath | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     keg = Keg.new(a) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     link = HOMEBREW_PREFIX.join("lib", "foo") | 
					
						
							|  |  |  |     link.parent.mkpath | 
					
						
							|  |  |  |     link.make_symlink(@nonexistent) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     keg.link | 
					
						
							|  |  |  |   ensure | 
					
						
							|  |  |  |     keg.unlink | 
					
						
							|  |  |  |     keg.uninstall | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2012-10-20 20:54:11 -05:00
										 |  |  | end |