Skip to content

Commit

Permalink
Merge pull request #1934 from xu-cheng/cleanup-fix
Browse files Browse the repository at this point in the history
cleanup: consider version_scheme
  • Loading branch information
xu-cheng authored Jan 30, 2017
2 parents d3d9ae3 + f3df412 commit 6f4cf7b
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 14 deletions.
11 changes: 10 additions & 1 deletion Library/Homebrew/formula.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1843,7 +1843,16 @@ def eligible_kegs_for_cleanup
eligible_kegs = if head? && (head_prefix = latest_head_prefix)
installed_kegs - [Keg.new(head_prefix)]
else
installed_kegs.select { |k| pkg_version > k.version }
installed_kegs.select do |keg|
tab = Tab.for_keg(keg)
if version_scheme > tab.version_scheme
true
elsif version_scheme == tab.version_scheme
pkg_version > keg.version
else
false
end
end
end

unless eligible_kegs.empty?
Expand Down
27 changes: 21 additions & 6 deletions Library/Homebrew/test/cleanup_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,25 +36,40 @@ def test_cleanup_dry_run
end

def test_cleanup_formula
f1 = Class.new(Testball) { version "0.1" }.new
f2 = Class.new(Testball) { version "0.2" }.new
f3 = Class.new(Testball) { version "0.3" }.new
f1 = Class.new(Testball) do
version "1.0"
end.new
f2 = Class.new(Testball) do
version "0.2"
version_scheme 1
end.new
f3 = Class.new(Testball) do
version "0.3"
version_scheme 1
end.new
f4 = Class.new(Testball) do
version "0.1"
version_scheme 2
end.new

shutup do
f1.brew { f1.install }
f2.brew { f2.install }
f3.brew { f3.install }
[f1, f2, f3, f4].each do |f|
f.brew { f.install }
Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
end
end

assert_predicate f1, :installed?
assert_predicate f2, :installed?
assert_predicate f3, :installed?
assert_predicate f4, :installed?

shutup { Homebrew::Cleanup.cleanup_formula f3 }

refute_predicate f1, :installed?
refute_predicate f2, :installed?
assert_predicate f3, :installed?
assert_predicate f4, :installed?
end

def test_cleanup_logs
Expand Down
28 changes: 21 additions & 7 deletions Library/Homebrew/test/formula_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -727,21 +727,35 @@ def test_to_hash_bottle
end

def test_eligible_kegs_for_cleanup
f1 = Class.new(Testball) { version "0.1" }.new
f2 = Class.new(Testball) { version "0.2" }.new
f3 = Class.new(Testball) { version "0.3" }.new
f1 = Class.new(Testball) do
version "1.0"
end.new
f2 = Class.new(Testball) do
version "0.2"
version_scheme 1
end.new
f3 = Class.new(Testball) do
version "0.3"
version_scheme 1
end.new
f4 = Class.new(Testball) do
version "0.1"
version_scheme 2
end.new

shutup do
f1.brew { f1.install }
f2.brew { f2.install }
f3.brew { f3.install }
[f1, f2, f3, f4].each do |f|
f.brew { f.install }
Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
end
end

assert_predicate f1, :installed?
assert_predicate f2, :installed?
assert_predicate f3, :installed?
assert_predicate f4, :installed?

assert_equal f3.installed_kegs.sort_by(&:version)[0..1],
assert_equal [f2, f1].map { |f| Keg.new(f.prefix) },
f3.eligible_kegs_for_cleanup.sort_by(&:version)
end

Expand Down

0 comments on commit 6f4cf7b

Please sign in to comment.