Skip to content

Commit

Permalink
fix param self references, and additional self reference tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jeroenrinzema committed Jun 20, 2020
1 parent 296c3ba commit a13c72b
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 2 deletions.
1 change: 1 addition & 0 deletions pkg/specs/dependencies/dependencies.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ lookup:
// Remove any self references
if edge == node.Name {
delete(unresolved, edge)
delete(node.DependsOn, edge)
continue
}

Expand Down
34 changes: 34 additions & 0 deletions pkg/specs/dependencies/dependencies_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,3 +233,37 @@ func TestCallCircularDependenciesDetection(t *testing.T) {
}
}
}

func TestSelfDependencyDetection(t *testing.T) {
flow := &specs.Flow{
Nodes: []*specs.Node{
{
Name: "first",
DependsOn: map[string]*specs.Node{
"first": nil,
},
},
{
Name: "second",
DependsOn: map[string]*specs.Node{
"second": nil,
},
},
},
}

tests := []*specs.Node{
flow.Nodes[0],
}

for _, input := range tests {
err := ResolveNode(flow, input, make(map[string]*specs.Node))
if err != nil {
t.Fatalf("unexpected error %s", err)
}

if len(input.DependsOn) > 0 {
t.Fatalf("unexpted remaining dependencies, expected dependencies to be empty: %+v", input.DependsOn)
}
}
}
3 changes: 2 additions & 1 deletion pkg/specs/dependencies/references.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ func ResolveParamReferences(params map[string]*specs.PropertyReference, dependen

resource, _ := lookup.ParseResource(param.Resource)
if resource != template.StackResource && resource != template.InputResource {
dependencies[template.SplitPath(param.Resource)[0]] = nil
dependency := template.SplitPath(param.Resource)[0]
dependencies[dependency] = nil
}

clone := CloneProperty(param.Property, param, key, key)
Expand Down
5 changes: 4 additions & 1 deletion pkg/transport/references.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ func DefineCaller(ctx instance.Context, node *specs.Node, manifest *specs.FlowsM
}

dependencies.ResolvePropertyReferences(prop, node.DependsOn)
dependencies.ResolveNode(manager, node, node.DependsOn)
err = dependencies.ResolveNode(manager, node, make(map[string]*specs.Node))
if err != nil {
return err
}
}

return nil
Expand Down

0 comments on commit a13c72b

Please sign in to comment.