diff options
| author | Jack Nagel | 2013-12-21 23:28:04 -0600 |
|---|---|---|
| committer | Jack Nagel | 2013-12-21 23:28:04 -0600 |
| commit | d19934dcb71c78f6f02f7cd7b8337507e4e05f3f (patch) | |
| tree | da44021ef1ea508edbf574a95bc4ec8af301279f /Library/Homebrew/test | |
| parent | f55e93d9fc8db5f460b3f5e102a3cd771f0e7627 (diff) | |
| download | brew-d19934dcb71c78f6f02f7cd7b8337507e4e05f3f.tar.bz2 | |
cleaner: clean up broken and orphaned symlinks
Diffstat (limited to 'Library/Homebrew/test')
| -rw-r--r-- | Library/Homebrew/test/test_cleaner.rb | 82 |
1 files changed, 70 insertions, 12 deletions
diff --git a/Library/Homebrew/test/test_cleaner.rb b/Library/Homebrew/test/test_cleaner.rb index 33205a8d2..9a4f75a86 100644 --- a/Library/Homebrew/test/test_cleaner.rb +++ b/Library/Homebrew/test/test_cleaner.rb @@ -63,22 +63,80 @@ class CleanerTests < Test::Unit::TestCase assert subdir.directory? end - def test_fails_to_remove_symlink_when_target_was_pruned_first - mkpath @f.prefix/'b' - ln_s 'b', @f.prefix/'a' - assert_raises(Errno::ENOENT) { Cleaner.new @f } + def test_removes_symlink_when_target_was_pruned_first + dir = @f.prefix/'b' + symlink = @f.prefix/'a' + + dir.mkpath + ln_s dir.basename, symlink + + Cleaner.new @f + + assert !dir.exist? + assert !symlink.symlink? + assert !symlink.exist? + end + + def test_removes_symlink_pointing_to_empty_directory + dir = @f.prefix/'b' + symlink = @f.prefix/'c' + + dir.mkpath + ln_s dir.basename, symlink + + Cleaner.new @f + + assert !dir.exist? + assert !symlink.symlink? + assert !symlink.exist? end - def test_fails_to_remove_symlink_pointing_to_empty_directory - mkpath @f.prefix/'b' - ln_s 'b', @f.prefix/'c' - assert_raises(Errno::ENOTDIR) { Cleaner.new @f } + def test_removes_broken_symlinks + symlink = @f.prefix/'symlink' + ln_s 'target', symlink + + Cleaner.new @f + + assert !symlink.symlink? end - def test_fails_to_remove_broken_symlink - ln_s 'target', @f.prefix/'symlink' + def test_skip_clean_broken_symlink + @f.class.skip_clean 'symlink' + symlink = @f.prefix/'symlink' + ln_s 'target', symlink + Cleaner.new @f - assert @f.prefix.join('symlink').symlink?, "not a symlink" - assert !@f.prefix.join('symlink').exist?, "target exists" + + assert symlink.symlink? + end + + def test_skip_clean_symlink_pointing_to_empty_directory + @f.class.skip_clean 'c' + dir = @f.prefix/'b' + symlink = @f.prefix/'c' + + dir.mkpath + ln_s dir.basename, symlink + + Cleaner.new @f + + assert !dir.exist? + assert symlink.symlink? + assert !symlink.exist? + end + + def test_skip_clean_symlink_when_target_pruned + @f.class.skip_clean 'a' + dir = @f.prefix/'b' + symlink = @f.prefix/'a' + + dir.mkpath + ln_s dir.basename, symlink + + Cleaner.new @f + + assert !dir.exist? + assert symlink.symlink? + assert !symlink.exist? end end |
