Resolve dependency_expansion_spec violation
This commit is contained in:
parent
89c7117b30
commit
94effcc64f
@ -6,7 +6,7 @@ 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(double(deps: deps, name: name))
|
allow(dep).to receive(:to_formula).and_return(instance_double(Formula, deps: deps, name: name))
|
||||||
dep
|
dep
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ describe Dependency do
|
|||||||
let(:baz) { build_dep(:baz) }
|
let(:baz) { build_dep(:baz) }
|
||||||
let(:qux) { build_dep(:qux) }
|
let(:qux) { build_dep(:qux) }
|
||||||
let(:deps) { [foo, bar, baz, qux] }
|
let(:deps) { [foo, bar, baz, qux] }
|
||||||
let(:formula) { double(deps: deps, name: "f") }
|
let(:formula) { instance_double(Formula, deps: deps, name: "f") }
|
||||||
|
|
||||||
describe "::expand" do
|
describe "::expand" do
|
||||||
it "yields dependent and dependency pairs" do
|
it "yields dependent and dependency pairs" do
|
||||||
@ -44,20 +44,20 @@ describe Dependency do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "preserves dependency order" do
|
it "preserves dependency order" do
|
||||||
allow(foo).to receive(:to_formula).and_return(double(name: "f", deps: [qux, baz]))
|
allow(foo).to receive(:to_formula).and_return(instance_double(Formula, name: "f", 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
|
||||||
|
|
||||||
it "skips optionals by default" do
|
it "skips optionals by default" do
|
||||||
deps = [build_dep(:foo, [:optional]), bar, baz, qux]
|
deps = [build_dep(:foo, [:optional]), bar, baz, qux]
|
||||||
f = double(deps: deps, build: double(with?: false), name: "f")
|
f = instance_double(Formula, deps: deps, build: instance_double(BuildOptions, with?: false), name: "f")
|
||||||
expect(described_class.expand(f)).to eq([bar, baz, qux])
|
expect(described_class.expand(f)).to eq([bar, baz, qux])
|
||||||
end
|
end
|
||||||
|
|
||||||
it "keeps recommended dependencies by default" do
|
it "keeps recommended dependencies by default" do
|
||||||
deps = [build_dep(:foo, [:recommended]), bar, baz, qux]
|
deps = [build_dep(:foo, [:recommended]), bar, baz, qux]
|
||||||
f = double(deps: deps, build: double(with?: true), name: "f")
|
f = instance_double(Formula, deps: deps, build: instance_double(BuildOptions, with?: true), name: "f")
|
||||||
expect(described_class.expand(f)).to eq(deps)
|
expect(described_class.expand(f)).to eq(deps)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ 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(double(deps: [], name: "foo"))
|
allow(dep).to receive(:to_formula).and_return(instance_double(Formula, deps: [], 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
|
||||||
@ -89,7 +89,8 @@ describe Dependency do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "skips parent but yields children with ::skip" do
|
it "skips parent but yields children with ::skip" do
|
||||||
f = double(
|
f = instance_double(
|
||||||
|
Formula,
|
||||||
name: "f",
|
name: "f",
|
||||||
deps: [
|
deps: [
|
||||||
build_dep(:foo, [], [bar, baz]),
|
build_dep(:foo, [], [bar, baz]),
|
||||||
@ -107,7 +108,7 @@ describe Dependency do
|
|||||||
it "keeps dependency but prunes recursive dependencies with ::keep_but_prune_recursive_deps" do
|
it "keeps dependency but prunes recursive dependencies with ::keep_but_prune_recursive_deps" do
|
||||||
foo = build_dep(:foo, [:test], bar)
|
foo = build_dep(:foo, [:test], bar)
|
||||||
baz = build_dep(:baz, [:test])
|
baz = build_dep(:baz, [:test])
|
||||||
f = double(name: "f", deps: [foo, baz])
|
f = instance_double(Formula, name: "f", deps: [foo, baz])
|
||||||
|
|
||||||
deps = described_class.expand(f) do |_dependent, dep|
|
deps = described_class.expand(f) do |_dependent, dep|
|
||||||
described_class.keep_but_prune_recursive_deps if dep.test?
|
described_class.keep_but_prune_recursive_deps if dep.test?
|
||||||
@ -124,15 +125,15 @@ 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(double(deps: [bar], name: foo.name))
|
allow(foo).to receive(:to_formula).and_return(instance_double(Formula, deps: [bar], name: foo.name))
|
||||||
f = double(name: "f", deps: [foo, bar])
|
f = instance_double(Formula, 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
|
||||||
|
|
||||||
it "cleans the expand stack" do
|
it "cleans the expand stack" do
|
||||||
foo = build_dep(:foo)
|
foo = build_dep(:foo)
|
||||||
allow(foo).to receive(:to_formula).and_raise(FormulaUnavailableError, foo.name)
|
allow(foo).to receive(:to_formula).and_raise(FormulaUnavailableError, foo.name)
|
||||||
f = double(name: "f", deps: [foo])
|
f = instance_double(Formula, name: "f", deps: [foo])
|
||||||
expect { described_class.expand(f) }.to raise_error(FormulaUnavailableError)
|
expect { described_class.expand(f) }.to raise_error(FormulaUnavailableError)
|
||||||
expect(described_class.instance_variable_get(:@expand_stack)).to be_empty
|
expect(described_class.instance_variable_get(:@expand_stack)).to be_empty
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user