mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Remove uses_from_macos
dep duplication in FormulaAPILoader
This commit is contained in:
parent
7392f9811e
commit
bae5abda82
@ -141,6 +141,12 @@ module Formulary
|
||||
json_formula = json_formula.merge(json_formula["variations"][bottle_tag])
|
||||
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
|
||||
desc json_formula["desc"]
|
||||
homepage json_formula["homepage"]
|
||||
@ -181,20 +187,18 @@ module Formulary
|
||||
disable! date: disable_date, because: reason
|
||||
end
|
||||
|
||||
json_formula["build_dependencies"].each do |dep|
|
||||
depends_on dep => :build
|
||||
end
|
||||
|
||||
json_formula["dependencies"].each do |dep|
|
||||
next if uses_from_macos_names.include? dep
|
||||
|
||||
depends_on dep
|
||||
end
|
||||
|
||||
json_formula["recommended_dependencies"].each do |dep|
|
||||
depends_on dep => :recommended
|
||||
end
|
||||
[:build, :recommended, :optional].each do |type|
|
||||
json_formula["#{type}_dependencies"].each do |dep|
|
||||
next if uses_from_macos_names.include? dep
|
||||
|
||||
json_formula["optional_dependencies"].each do |dep|
|
||||
depends_on dep => :optional
|
||||
depends_on dep => type
|
||||
end
|
||||
end
|
||||
|
||||
json_formula["uses_from_macos"].each do |dep|
|
||||
|
@ -270,6 +270,16 @@ describe Formulary do
|
||||
}
|
||||
end
|
||||
|
||||
let(:linux_variations_json) do
|
||||
{
|
||||
"variations" => {
|
||||
"x86_64_linux" => {
|
||||
"dependencies" => ["dep", "uses_from_macos_dep"],
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
allow(described_class).to receive(:loader_for).and_return(described_class::FormulaAPILoader.new(formula_name))
|
||||
end
|
||||
@ -323,6 +333,16 @@ describe Formulary do
|
||||
expect(formula.deps.count).to eq 5
|
||||
expect(formula.deps.map(&:name).include?("variations_dep")).to be true
|
||||
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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user