Merge pull request #11438 from cnnrmnn/no-uninstall-stable

Don't uninstall `stable` keg with `--HEAD`
This commit is contained in:
Rylan Polster 2021-05-29 16:58:05 -04:00 committed by GitHub
commit eeef3f4fe7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 10 deletions

View File

@ -2181,8 +2181,10 @@ class Formula
def eligible_kegs_for_cleanup(quiet: false)
eligible_for_cleanup = []
if latest_version_installed?
eligible_kegs = if head? && (head_prefix = latest_head_prefix)
installed_kegs - [Keg.new(head_prefix)]
eligible_kegs = if head?
head, stable = installed_kegs.partition { |k| k.version.head? }
# Remove newest head and stable kegs
head.sort_by(&:version).slice(0...-1) + stable.sort_by(&:version).slice(0...-1)
else
installed_kegs.select do |keg|
tab = Tab.for_keg(keg)

View File

@ -928,20 +928,17 @@ describe Formula do
head("foo")
end
stable_prefix = f.latest_installed_prefix
stable_prefix.mkpath
[["000000_1", 1], ["111111", 2], ["111111_1", 2]].each do |pkg_version_suffix, stamp|
prefix = f.prefix("HEAD-#{pkg_version_suffix}")
["0.0.1", "0.0.2", "0.1", "HEAD-000000", "HEAD-111111", "HEAD-111111_1"].each do |version|
prefix = f.prefix(version)
prefix.mkpath
tab = Tab.empty
tab.tabfile = prefix/Tab::FILENAME
tab.source_modified_time = stamp
tab.source_modified_time = 1
tab.write
end
eligible_kegs = f.installed_kegs - [Keg.new(f.prefix("HEAD-111111_1"))]
expect(f.eligible_kegs_for_cleanup).to eq(eligible_kegs)
eligible_kegs = f.installed_kegs - [Keg.new(f.prefix("HEAD-111111_1")), Keg.new(f.prefix("0.1"))]
expect(f.eligible_kegs_for_cleanup.sort_by(&:version)).to eq(eligible_kegs.sort_by(&:version))
end
end