Resolve dependency_expansion_spec violation
This commit is contained in:
parent
89c7117b30
commit
94effcc64f
@ -6,7 +6,7 @@ require "dependency"
|
||||
describe Dependency do
|
||||
def build_dep(name, tags = [], deps = [])
|
||||
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
|
||||
end
|
||||
|
||||
@ -15,7 +15,7 @@ describe Dependency do
|
||||
let(:baz) { build_dep(:baz) }
|
||||
let(:qux) { build_dep(: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
|
||||
it "yields dependent and dependency pairs" do
|
||||
@ -44,20 +44,20 @@ describe Dependency do
|
||||
end
|
||||
|
||||
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])
|
||||
end
|
||||
end
|
||||
|
||||
it "skips optionals by default" do
|
||||
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])
|
||||
end
|
||||
|
||||
it "keeps recommended dependencies by default" do
|
||||
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)
|
||||
end
|
||||
|
||||
@ -75,7 +75,7 @@ describe Dependency do
|
||||
it "merges dependencies and preserves env_proc" do
|
||||
env_proc = double
|
||||
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])
|
||||
expect(described_class.expand(formula).first.env_proc).to eq(env_proc)
|
||||
end
|
||||
@ -89,7 +89,8 @@ describe Dependency do
|
||||
end
|
||||
|
||||
it "skips parent but yields children with ::skip" do
|
||||
f = double(
|
||||
f = instance_double(
|
||||
Formula,
|
||||
name: "f",
|
||||
deps: [
|
||||
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
|
||||
foo = build_dep(:foo, [:test], bar)
|
||||
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|
|
||||
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
|
||||
foo = build_dep(:foo)
|
||||
bar = build_dep(:bar, [], [foo])
|
||||
allow(foo).to receive(:to_formula).and_return(double(deps: [bar], name: foo.name))
|
||||
f = double(name: "f", deps: [foo, bar])
|
||||
allow(foo).to receive(:to_formula).and_return(instance_double(Formula, deps: [bar], name: foo.name))
|
||||
f = instance_double(Formula, name: "f", deps: [foo, bar])
|
||||
expect { described_class.expand(f) }.not_to raise_error
|
||||
end
|
||||
|
||||
it "cleans the expand stack" do
|
||||
foo = build_dep(:foo)
|
||||
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.instance_variable_get(:@expand_stack)).to be_empty
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user