Merge pull request #16872 from cho-m/cleanup-cask-broken-symlinks

cleanup: remove broken symlink for uninstalled migrated Casks
This commit is contained in:
Mike McQuaid 2024-03-31 19:30:02 +01:00 committed by GitHub
commit 87bf4af3fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 0 deletions

View File

@ -642,6 +642,20 @@ module Homebrew
end
end
require "cask/caskroom"
if Cask::Caskroom.path.directory?
Cask::Caskroom.path.each_child do |path|
path.extend(ObserverPathnameExtension)
next if !path.symlink? || path.resolved_path_exists?
if dry_run?
puts "Would remove (broken link): #{path}"
else
path.unlink
end
end
end
return if dry_run?
return if ObserverPathnameExtension.total.zero?

View File

@ -163,6 +163,20 @@ RSpec.describe Homebrew::Cleanup do
expect(grandchild_dir).to exist
end
end
it "removes broken symlinks for uninstalled migrated Casks" do
caskroom = Cask::Caskroom.path
old_cask_dir = caskroom/"old"
new_cask_dir = caskroom/"new"
unrelated_cask_dir = caskroom/"other"
unrelated_cask_dir.mkpath
FileUtils.ln_s new_cask_dir, old_cask_dir
cleanup.prune_prefix_symlinks_and_directories
expect(unrelated_cask_dir).to exist
expect(old_cask_dir).not_to be_a_symlink
expect(old_cask_dir).not_to exist
end
end
specify "::cleanup_formula" do