diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 77b25140d853f4624afdfa0015d432248c91a399..4d3c8b31568269ad9f9defdd33c733dce45ca251 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -104,13 +104,16 @@ func (e *Engine) render(tpls map[string]string, v interface{}) (map[string]strin // allTemplates returns all templates for a chart and its dependencies. func allTemplates(c *chart.Chart) map[string]string { templates := map[string]string{} + recAllTpls(c, templates) + return templates +} + +func recAllTpls(c *chart.Chart, templates map[string]string) { for _, child := range c.Dependencies { - for _, t := range child.Templates { - templates[t.Name] = string(t.Data) - } + recAllTpls(child, templates) } for _, t := range c.Templates { templates[t.Name] = string(t.Data) } - return templates + } diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index 006a91bcda6b2555a561ead0a604ed489a7e5eff..36992a1f251be9447f18ea377c9101ee7739ca64 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -90,16 +90,23 @@ func TestAllTemplates(t *testing.T) { {Name: "bar", Data: []byte("bar")}, }, Dependencies: []*chart.Chart{ - {Templates: []*chart.Template{ - {Name: "pinky", Data: []byte("pinky")}, - {Name: "brain", Data: []byte("brain")}, - }}, + { + Templates: []*chart.Template{ + {Name: "pinky", Data: []byte("pinky")}, + {Name: "brain", Data: []byte("brain")}, + }, + Dependencies: []*chart.Chart{ + {Templates: []*chart.Template{ + {Name: "innermost", Data: []byte("innermost")}, + }}, + }, + }, }, } tpls := allTemplates(ch1) - if len(tpls) != 4 { - t.Errorf("Expected 4 charts, got %d", len(tpls)) + if len(tpls) != 5 { + t.Errorf("Expected 5 charts, got %d", len(tpls)) } } @@ -112,9 +119,11 @@ func TestRenderDependency(t *testing.T) { {Name: "outer", Data: []byte(toptpl)}, }, Dependencies: []*chart.Chart{ - {Templates: []*chart.Template{ - {Name: "inner", Data: []byte(deptpl)}, - }}, + { + Templates: []*chart.Template{ + {Name: "inner", Data: []byte(deptpl)}, + }, + }, }, }