Add more tests documenting linking behavior

This commit is contained in:
Jack Nagel 2014-07-03 23:27:54 -05:00
parent 60fc7eb0ed
commit f666b76c39

View File

@ -15,6 +15,7 @@ class LinkTests < Homebrew::TestCase
@keg = Keg.new(keg)
@dst = HOMEBREW_PREFIX.join("bin", "helloworld")
@nonexistent = Pathname.new("/some/nonexistent/path")
@mode = OpenStruct.new
@ -42,7 +43,9 @@ class LinkTests < Homebrew::TestCase
def test_unlinking_keg
@keg.link
assert_predicate @dst, :symlink?
assert_equal 4, @keg.unlink
refute_predicate @dst, :symlink?
end
def test_link_dry_run
@ -69,7 +72,7 @@ class LinkTests < Homebrew::TestCase
def test_link_ignores_broken_symlinks_at_target
src = @keg.join("bin", "helloworld")
ln_s "/some/nonexistent/path", @dst
@dst.make_symlink(@nonexistent)
@keg.link
assert_equal src.relative_path_from(@dst.dirname), @dst.readlink
end
@ -159,4 +162,41 @@ class LinkTests < Homebrew::TestCase
@keg.unlink
refute_predicate @keg, :linked?
end
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
assert_equal 3, @keg.unlink
end
end