diff options
| author | Jack Nagel | 2014-07-03 23:27:54 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-07-03 23:27:54 -0500 |
| commit | f666b76c39f4f25d1dea9477cd9a69f0b46c2af1 (patch) | |
| tree | 1e1dee453922bdaef6100ee301be757ca4c34bf6 /Library | |
| parent | 60fc7eb0edba51e29de0981e9662fd6b51bd651b (diff) | |
| download | brew-f666b76c39f4f25d1dea9477cd9a69f0b46c2af1.tar.bz2 | |
Add more tests documenting linking behavior
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/test/test_keg.rb | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/Library/Homebrew/test/test_keg.rb b/Library/Homebrew/test/test_keg.rb index ec1d5e724..c30096ea3 100644 --- a/Library/Homebrew/test/test_keg.rb +++ b/Library/Homebrew/test/test_keg.rb @@ -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 |
