aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlad Shablinsky2016-07-16 15:31:03 +0300
committerXu Cheng2016-07-16 20:39:14 +0800
commit4b2c4ef25835a87b5bac4fb26eae91dbfed93863 (patch)
tree1a6b75d327d70cda6916271e9985f0c0b536ecde
parent3fb5d70a729472a7d7f2a5d0d7b84248921fb583 (diff)
downloadbrew-4b2c4ef25835a87b5bac4fb26eae91dbfed93863.tar.bz2
Update and test eligible_kegs_for_cleanup
Closes #478. Signed-off-by: Xu Cheng <xucheng@me.com>
-rw-r--r--Library/Homebrew/formula.rb7
-rw-r--r--Library/Homebrew/test/test_formula.rb24
2 files changed, 30 insertions, 1 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index cb27e9492..5e8232d97 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 c5175e27e..d586481f5 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"