Update and test eligible_kegs_for_cleanup

Closes #478.

Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
Vlad Shablinsky 2016-07-16 15:31:03 +03:00 committed by Xu Cheng
parent 3fb5d70a72
commit 4b2c4ef258
No known key found for this signature in database
GPG Key ID: C2A3860FA0B459CE
2 changed files with 30 additions and 1 deletions

View File

@ -1521,7 +1521,12 @@ class Formula
def eligible_kegs_for_cleanup
eligible_for_cleanup = []
if installed?
eligible_kegs = installed_kegs.select { |k| pkg_version > k.version }
eligible_kegs = if head? && (head_prefix = latest_head_prefix)
installed_kegs - [Keg.new(head_prefix)]
else
installed_kegs.select { |k| pkg_version > k.version }
end
if eligible_kegs.any?
eligible_kegs.each do |keg|
if keg.linked?

View File

@ -451,6 +451,30 @@ class FormulaTests < Homebrew::TestCase
f3.rack.rmtree
end
def test_eligible_kegs_for_cleanup_head_installed
f = formula do
version "0.1"
head "foo"
end
stable_prefix = f.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}")
prefix.mkpath
tab = Tab.empty
tab.tabfile = prefix.join("INSTALL_RECEIPT.json")
tab.source_modified_time = stamp
tab.write
end
eligible_kegs = f.installed_kegs - [Keg.new(f.prefix("HEAD-111111_1"))]
assert_equal eligible_kegs, f.eligible_kegs_for_cleanup
ensure
f.rack.rmtree
end
def test_pour_bottle
f_false = formula("foo") do
url "foo-1.0"