diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index 4d6832e44f..772f4c902b 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -158,8 +158,9 @@ class Formulary class TapLoader < FormulaLoader attr_reader :tap - def initialize(tapped_name) - name, path = formula_name_path(tapped_name) + def initialize(tapped_name, from: nil) + warn = ![:keg, :rack].include?(from) + name, path = formula_name_path(tapped_name, warn: warn) super name, path end @@ -236,8 +237,8 @@ class Formulary # * a formula pathname # * a formula URL # * a local bottle reference - def self.factory(ref, spec = :stable, alias_path: nil) - loader_for(ref).get_formula(spec, alias_path: alias_path) + def self.factory(ref, spec = :stable, alias_path: nil, from: nil) + loader_for(ref, from: from).get_formula(spec, alias_path: alias_path) end # Return a Formula instance for the given rack. @@ -253,7 +254,7 @@ class Formulary if keg from_keg(keg, spec, alias_path: alias_path) else - factory(rack.basename.to_s, spec || :stable, alias_path: alias_path) + factory(rack.basename.to_s, spec || :stable, alias_path: alias_path, from: :rack) end end @@ -265,13 +266,13 @@ class Formulary spec ||= tab.spec f = if tap.nil? - factory(keg.rack.basename.to_s, spec, alias_path: alias_path) + factory(keg.rack.basename.to_s, spec, alias_path: alias_path, from: :keg) else begin - factory("#{tap}/#{keg.rack.basename}", spec, alias_path: alias_path) + factory("#{tap}/#{keg.rack.basename}", spec, alias_path: alias_path, from: :keg) rescue FormulaUnavailableError # formula may be migrated to different tap. Try to search in core and all taps. - factory(keg.rack.basename.to_s, spec, alias_path: alias_path) + factory(keg.rack.basename.to_s, spec, alias_path: alias_path, from: :keg) end end f.build = tab @@ -309,14 +310,14 @@ class Formulary loader_for(ref).path end - def self.loader_for(ref) + def self.loader_for(ref, from: nil) case ref when %r{(https?|ftp|file)://} return FromUrlLoader.new(ref) when Pathname::BOTTLE_EXTNAME_RX return BottleLoader.new(ref) when HOMEBREW_TAP_FORMULA_REGEX - return TapLoader.new(ref) + return TapLoader.new(ref, from: from) end return FromPathLoader.new(ref) if File.extname(ref) == ".rb" @@ -359,7 +360,7 @@ class Formulary end unless possible_tap_newname_formulae.empty? - return TapLoader.new(possible_tap_newname_formulae.first) + return TapLoader.new(possible_tap_newname_formulae.first, from: from) end possible_cached_formula = Pathname.new("#{HOMEBREW_CACHE_FORMULA}/#{ref}.rb") diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb index 5f98ace15d..b6612535a6 100644 --- a/Library/Homebrew/test/testing_env.rb +++ b/Library/Homebrew/test/testing_env.rb @@ -119,7 +119,8 @@ module Homebrew def stub_formula_loader(formula, ref = formula.full_name) loader = mock loader.stubs(:get_formula).returns(formula) - Formulary.stubs(:loader_for).with(ref).returns(loader) + Formulary.stubs(:loader_for).with(ref, from: :keg).returns(loader) + Formulary.stubs(:loader_for).with(ref, from: nil).returns(loader) end end end