Skip to content

Commit 6f4cf7b

Browse files
authored
Merge pull request #1934 from xu-cheng/cleanup-fix
cleanup: consider version_scheme
2 parents d3d9ae3 + f3df412 commit 6f4cf7b

File tree

3 files changed

+52
-14
lines changed

3 files changed

+52
-14
lines changed

Library/Homebrew/formula.rb

+10-1
Original file line numberDiff line numberDiff line change
@@ -1843,7 +1843,16 @@ def eligible_kegs_for_cleanup
18431843
eligible_kegs = if head? && (head_prefix = latest_head_prefix)
18441844
installed_kegs - [Keg.new(head_prefix)]
18451845
else
1846-
installed_kegs.select { |k| pkg_version > k.version }
1846+
installed_kegs.select do |keg|
1847+
tab = Tab.for_keg(keg)
1848+
if version_scheme > tab.version_scheme
1849+
true
1850+
elsif version_scheme == tab.version_scheme
1851+
pkg_version > keg.version
1852+
else
1853+
false
1854+
end
1855+
end
18471856
end
18481857

18491858
unless eligible_kegs.empty?

Library/Homebrew/test/cleanup_test.rb

+21-6
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,40 @@ def test_cleanup_dry_run
3636
end
3737

3838
def test_cleanup_formula
39-
f1 = Class.new(Testball) { version "0.1" }.new
40-
f2 = Class.new(Testball) { version "0.2" }.new
41-
f3 = Class.new(Testball) { version "0.3" }.new
39+
f1 = Class.new(Testball) do
40+
version "1.0"
41+
end.new
42+
f2 = Class.new(Testball) do
43+
version "0.2"
44+
version_scheme 1
45+
end.new
46+
f3 = Class.new(Testball) do
47+
version "0.3"
48+
version_scheme 1
49+
end.new
50+
f4 = Class.new(Testball) do
51+
version "0.1"
52+
version_scheme 2
53+
end.new
4254

4355
shutup do
44-
f1.brew { f1.install }
45-
f2.brew { f2.install }
46-
f3.brew { f3.install }
56+
[f1, f2, f3, f4].each do |f|
57+
f.brew { f.install }
58+
Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
59+
end
4760
end
4861

4962
assert_predicate f1, :installed?
5063
assert_predicate f2, :installed?
5164
assert_predicate f3, :installed?
65+
assert_predicate f4, :installed?
5266

5367
shutup { Homebrew::Cleanup.cleanup_formula f3 }
5468

5569
refute_predicate f1, :installed?
5670
refute_predicate f2, :installed?
5771
assert_predicate f3, :installed?
72+
assert_predicate f4, :installed?
5873
end
5974

6075
def test_cleanup_logs

Library/Homebrew/test/formula_test.rb

+21-7
Original file line numberDiff line numberDiff line change
@@ -727,21 +727,35 @@ def test_to_hash_bottle
727727
end
728728

729729
def test_eligible_kegs_for_cleanup
730-
f1 = Class.new(Testball) { version "0.1" }.new
731-
f2 = Class.new(Testball) { version "0.2" }.new
732-
f3 = Class.new(Testball) { version "0.3" }.new
730+
f1 = Class.new(Testball) do
731+
version "1.0"
732+
end.new
733+
f2 = Class.new(Testball) do
734+
version "0.2"
735+
version_scheme 1
736+
end.new
737+
f3 = Class.new(Testball) do
738+
version "0.3"
739+
version_scheme 1
740+
end.new
741+
f4 = Class.new(Testball) do
742+
version "0.1"
743+
version_scheme 2
744+
end.new
733745

734746
shutup do
735-
f1.brew { f1.install }
736-
f2.brew { f2.install }
737-
f3.brew { f3.install }
747+
[f1, f2, f3, f4].each do |f|
748+
f.brew { f.install }
749+
Tab.create(f, DevelopmentTools.default_compiler, :libcxx).write
750+
end
738751
end
739752

740753
assert_predicate f1, :installed?
741754
assert_predicate f2, :installed?
742755
assert_predicate f3, :installed?
756+
assert_predicate f4, :installed?
743757

744-
assert_equal f3.installed_kegs.sort_by(&:version)[0..1],
758+
assert_equal [f2, f1].map { |f| Keg.new(f.prefix) },
745759
f3.eligible_kegs_for_cleanup.sort_by(&:version)
746760
end
747761

0 commit comments

Comments
 (0)