From 4b2c4ef25835a87b5bac4fb26eae91dbfed93863 Mon Sep 17 00:00:00 2001 From: Vlad Shablinsky <vladshablinsky@gmail.com> Date: Sat, 16 Jul 2016 15:31:03 +0300 Subject: [PATCH] Update and test eligible_kegs_for_cleanup Closes #478. Signed-off-by: Xu Cheng <xucheng@me.com> --- Library/Homebrew/formula.rb | 7 ++++++- Library/Homebrew/test/test_formula.rb | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index cb27e94921..5e8232d972 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -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? diff --git a/Library/Homebrew/test/test_formula.rb b/Library/Homebrew/test/test_formula.rb index c5175e27e6..d586481f5b 100644 --- a/Library/Homebrew/test/test_formula.rb +++ b/Library/Homebrew/test/test_formula.rb @@ -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" -- GitLab