Skip to content

Commit de7e904

Browse files
committed
Explicitly use Formula#latest_formula where needed
1 parent fa68f3d commit de7e904

File tree

6 files changed

+21
-6
lines changed

6 files changed

+21
-6
lines changed

Library/Homebrew/cmd/outdated.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def print_outdated(formulae_or_casks)
101101
# There is a newer HEAD but the version number has not changed.
102102
"latest HEAD"
103103
else
104-
f.pkg_version.to_s
104+
f.latest_formula.pkg_version.to_s
105105
end
106106

107107
outdated_versions = outdated_kegs.group_by { |keg| Formulary.from_keg(keg).full_name }

Library/Homebrew/cmd/reinstall.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def run
141141
end
142142
Migrator.migrate_if_needed(formula, force: args.force?)
143143
Homebrew::Reinstall.build_install_context(
144-
formula,
144+
formula.latest_formula,
145145
flags: args.flags_only,
146146
force_bottle: args.force_bottle?,
147147
build_from_source_formulae: args.build_from_source_formulae,

Library/Homebrew/formula.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,14 +1721,15 @@ def outdated_kegs(fetch_head: false)
17211721
Formula.cache[:outdated_kegs][cache_key] ||= begin
17221722
all_kegs = []
17231723
current_version = T.let(false, T::Boolean)
1724+
latest = latest_formula
17241725

17251726
installed_kegs.each do |keg|
17261727
all_kegs << keg
17271728
version = keg.version
17281729
next if version.head?
17291730

1730-
next if version_scheme > keg.version_scheme && pkg_version != version
1731-
next if version_scheme == keg.version_scheme && pkg_version > version
1731+
next if latest.version_scheme > keg.version_scheme && latest.pkg_version != version
1732+
next if latest.version_scheme == keg.version_scheme && latest.pkg_version > version
17321733

17331734
# don't consider this keg current if there's a newer formula available
17341735
next if follow_installed_alias? && new_formula_available?
@@ -1786,7 +1787,7 @@ def alias_changed?
17861787
# Otherwise, return self.
17871788
sig { returns(Formula) }
17881789
def latest_formula
1789-
installed_alias_target_changed? ? T.must(current_installed_alias_target) : self
1790+
installed_alias_target_changed? ? T.must(current_installed_alias_target) : Formulary.factory(name)
17901791
end
17911792

17921793
sig { returns(T::Array[Formula]) }

Library/Homebrew/test/formula_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,8 @@ def post_install
880880

881881
expect(f3.runtime_dependencies.map(&:name)).to eq(["baz/qux/f2"])
882882

883+
described_class.clear_cache
884+
883885
f1_path = Tap.fetch("foo", "bar").path/"Formula/f1.rb"
884886
stub_formula_loader(formula("f1", path: f1_path) { url("f1-1.0") }, "foo/bar/f1")
885887

@@ -965,6 +967,7 @@ def post_install
965967
sha256 cellar: :any, Utils::Bottles.tag.to_sym => TEST_SHA256
966968
end
967969
end
970+
stub_formula_loader(f1)
968971

969972
h = f1.to_hash
970973

@@ -1275,6 +1278,8 @@ def pour_bottle?
12751278
let(:alias_path) { CoreTap.instance.alias_dir/alias_name }
12761279

12771280
before do
1281+
stub_formula_loader(f)
1282+
stub_formula_loader(new_formula)
12781283
allow(described_class).to receive(:installed).and_return([f])
12791284

12801285
f.build = tab
@@ -1367,6 +1372,12 @@ def pour_bottle?
13671372
let(:alias_name) { "bar" }
13681373
let(:alias_path) { f.tap.alias_dir/alias_name }
13691374

1375+
before do
1376+
stub_formula_loader(f)
1377+
stub_formula_loader(old_formula)
1378+
stub_formula_loader(new_formula)
1379+
end
1380+
13701381
def setup_tab_for_prefix(prefix, options = {})
13711382
prefix.mkpath
13721383

Library/Homebrew/test/migrator_spec.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121

2222
before do |example|
2323
allow(new_formula).to receive(:oldnames).and_return(["oldname"])
24+
allow(Formulary).to receive(:factory).with("homebrew/core/oldname", any_args).and_return(old_formula)
25+
allow(Formulary).to receive(:factory).with("oldname", any_args).and_return(old_formula)
26+
allow(Formulary).to receive(:factory).with("newname", any_args).and_return(new_formula)
2427

2528
# do not create directories for error tests
2629
next if example.metadata[:description].start_with?("raises an error")

Library/Homebrew/test/support/helper/formula.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def formula(name = "formula_name", path: nil, spec: :stable, alias_path: nil, ta
1515
def stub_formula_loader(formula, ref = formula.full_name, call_original: false)
1616
allow(Formulary).to receive(:loader_for).and_call_original if call_original
1717

18-
loader = instance_double(Formulary::FormulaLoader, get_formula: formula)
18+
loader = instance_double(Formulary::FormulaLoader, get_formula: formula, name: formula.name)
1919
allow(Formulary).to receive(:loader_for).with(ref, any_args).and_return(loader)
2020
end
2121
end

0 commit comments

Comments
 (0)