Merge pull request #15607 from MikeMcQuaid/eval_all_api

dependency: use formula name.
This commit is contained in:
Mike McQuaid 2023-06-29 17:24:55 +01:00 committed by GitHub
commit 36fc91b7c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 8 deletions

View File

@ -79,6 +79,11 @@ class Dependency
new(*Marshal.load(marshaled)) # rubocop:disable Security/MarshalLoad new(*Marshal.load(marshaled)) # rubocop:disable Security/MarshalLoad
end end
sig { params(formula: Formula).returns(T.self_type) }
def dup_with_formula_name(formula)
self.class.new(formula.full_name.to_s, tags, env_proc, option_names)
end
class << self class << self
# Expand the dependencies of each dependent recursively, optionally yielding # Expand the dependencies of each dependent recursively, optionally yielding
# `[dependent, dep]` pairs to allow callers to apply arbitrary filters to # `[dependent, dep]` pairs to allow callers to apply arbitrary filters to
@ -112,7 +117,11 @@ class Dependency
else else
next if @expand_stack.include? dep.name next if @expand_stack.include? dep.name
expanded_deps.concat(expand(dep.to_formula, cache_key: cache_key, &block)) dep_formula = dep.to_formula
expanded_deps.concat(expand(dep_formula, cache_key: cache_key, &block))
# Fixes names for renamed/aliased formulae.
dep = dep.dup_with_formula_name(dep_formula)
expanded_deps << dep expanded_deps << dep
end end
end end

View File

@ -5,7 +5,8 @@ require "dependency"
describe Dependency do describe Dependency do
def build_dep(name, tags = [], deps = []) def build_dep(name, tags = [], deps = [])
dep = described_class.new(name.to_s, tags) dep = described_class.new(name.to_s, tags)
allow(dep).to receive(:to_formula).and_return(instance_double(Formula, deps: deps, name: name)) allow(dep).to receive(:to_formula).and_return \
instance_double(Formula, deps: deps, name: name, full_name: name)
dep dep
end end
@ -43,7 +44,8 @@ describe Dependency do
end end
it "preserves dependency order" do it "preserves dependency order" do
allow(foo).to receive(:to_formula).and_return(instance_double(Formula, name: "f", deps: [qux, baz])) allow(foo).to receive(:to_formula).and_return \
instance_double(Formula, name: "foo", full_name: "foo", deps: [qux, baz])
expect(described_class.expand(formula)).to eq([qux, baz, foo, bar]) expect(described_class.expand(formula)).to eq([qux, baz, foo, bar])
end end
end end
@ -74,7 +76,8 @@ describe Dependency do
it "merges dependencies and preserves env_proc" do it "merges dependencies and preserves env_proc" do
env_proc = double env_proc = double
dep = described_class.new("foo", [], env_proc) dep = described_class.new("foo", [], env_proc)
allow(dep).to receive(:to_formula).and_return(instance_double(Formula, deps: [], name: "foo")) allow(dep).to receive(:to_formula).and_return \
instance_double(Formula, deps: [], name: "foo", full_name: "foo")
deps.replace([dep]) deps.replace([dep])
expect(described_class.expand(formula).first.env_proc).to eq(env_proc) expect(described_class.expand(formula).first.env_proc).to eq(env_proc)
end end
@ -124,8 +127,9 @@ describe Dependency do
it "doesn't raise an error when a dependency is cyclic" do it "doesn't raise an error when a dependency is cyclic" do
foo = build_dep(:foo) foo = build_dep(:foo)
bar = build_dep(:bar, [], [foo]) bar = build_dep(:bar, [], [foo])
allow(foo).to receive(:to_formula).and_return(instance_double(Formula, deps: [bar], name: foo.name)) allow(foo).to receive(:to_formula).and_return \
f = instance_double(Formula, name: "f", deps: [foo, bar]) instance_double(Formula, deps: [bar], name: foo.name, full_name: foo.name)
f = instance_double(Formula, name: "f", full_name: "f", deps: [foo, bar])
expect { described_class.expand(f) }.not_to raise_error expect { described_class.expand(f) }.not_to raise_error
end end

View File

@ -829,7 +829,9 @@ describe Formula do
allow(tap_loader).to receive(:get_formula).and_raise(RuntimeError, "tried resolving tap formula") allow(tap_loader).to receive(:get_formula).and_raise(RuntimeError, "tried resolving tap formula")
allow(Formulary).to receive(:loader_for).with("foo/bar/f1", from: nil).and_return(tap_loader) allow(Formulary).to receive(:loader_for).with("foo/bar/f1", from: nil).and_return(tap_loader)
stub_formula_loader(formula("f2") { url("f2-1.0") }, "baz/qux/f2")
f2_path = Tap.new("baz", "qux").path/"Formula/f2.rb"
stub_formula_loader(formula("f2", path: f2_path) { url("f2-1.0") }, "baz/qux/f2")
f3 = formula "f3" do f3 = formula "f3" do
url "f3-1.0" url "f3-1.0"
@ -840,7 +842,9 @@ describe Formula do
expect(f3.runtime_dependencies.map(&:name)).to eq(["baz/qux/f2"]) expect(f3.runtime_dependencies.map(&:name)).to eq(["baz/qux/f2"])
stub_formula_loader(formula("f1") { url("f1-1.0") }, "foo/bar/f1") f1_path = Tap.new("foo", "bar").path/"Formula/f1.rb"
stub_formula_loader(formula("f1", path: f1_path) { url("f1-1.0") }, "foo/bar/f1")
f3.build = BuildOptions.new(Options.create(["--with-f1"]), f3.options) f3.build = BuildOptions.new(Options.create(["--with-f1"]), f3.options)
expect(f3.runtime_dependencies.map(&:name)).to eq(["foo/bar/f1", "baz/qux/f2"]) expect(f3.runtime_dependencies.map(&:name)).to eq(["foo/bar/f1", "baz/qux/f2"])