Remove uses_from_macos dep duplication in FormulaAPILoader

This commit is contained in:
Rylan Polster 2022-07-25 08:49:19 +02:00
parent 7392f9811e
commit bae5abda82
No known key found for this signature in database
GPG Key ID: 46A744940CFF4D64
2 changed files with 33 additions and 9 deletions

View File

@ -141,6 +141,12 @@ module Formulary
json_formula = json_formula.merge(json_formula["variations"][bottle_tag]) json_formula = json_formula.merge(json_formula["variations"][bottle_tag])
end end
uses_from_macos_names = json_formula["uses_from_macos"].map do |dep|
next dep unless dep.is_a? Hash
dep.keys.first
end
klass = Class.new(::Formula) do klass = Class.new(::Formula) do
desc json_formula["desc"] desc json_formula["desc"]
homepage json_formula["homepage"] homepage json_formula["homepage"]
@ -181,20 +187,18 @@ module Formulary
disable! date: disable_date, because: reason disable! date: disable_date, because: reason
end end
json_formula["build_dependencies"].each do |dep|
depends_on dep => :build
end
json_formula["dependencies"].each do |dep| json_formula["dependencies"].each do |dep|
next if uses_from_macos_names.include? dep
depends_on dep depends_on dep
end end
json_formula["recommended_dependencies"].each do |dep| [:build, :recommended, :optional].each do |type|
depends_on dep => :recommended json_formula["#{type}_dependencies"].each do |dep|
end next if uses_from_macos_names.include? dep
json_formula["optional_dependencies"].each do |dep| depends_on dep => type
depends_on dep => :optional end
end end
json_formula["uses_from_macos"].each do |dep| json_formula["uses_from_macos"].each do |dep|

View File

@ -270,6 +270,16 @@ describe Formulary do
} }
end end
let(:linux_variations_json) do
{
"variations" => {
"x86_64_linux" => {
"dependencies" => ["dep", "uses_from_macos_dep"],
},
},
}
end
before do before do
allow(described_class).to receive(:loader_for).and_return(described_class::FormulaAPILoader.new(formula_name)) allow(described_class).to receive(:loader_for).and_return(described_class::FormulaAPILoader.new(formula_name))
end end
@ -323,6 +333,16 @@ describe Formulary do
expect(formula.deps.count).to eq 5 expect(formula.deps.count).to eq 5
expect(formula.deps.map(&:name).include?("variations_dep")).to be true expect(formula.deps.map(&:name).include?("variations_dep")).to be true
end end
it "returns a Formula without duplicated deps and uses_from_macos with variations on Linux", :needs_linux do
allow(Homebrew::API::Formula).to receive(:all_formulae).and_return formula_json_contents(linux_variations_json)
allow(Utils::Bottles).to receive(:tag).and_return(:arm64_monterey)
formula = described_class.factory(formula_name)
expect(formula).to be_kind_of(Formula)
expect(formula.deps.count).to eq 5
expect(formula.deps.map(&:name).include?("variations_dep")).to be true
end
end end
end end