feat(pkg/engine): and custom funcs overriding test

Signed-off-by: Stepan Paksashvili <stepan.paksashvili@flant.com>
pull/30734/head
Stepan Paksashvili 5 months ago
parent 9073bcf53e
commit 8982b57e5e

@ -196,6 +196,11 @@ func (e Engine) initFunMap(t *template.Template) {
funcMap := funcMap() funcMap := funcMap()
includedNames := make(map[string]int) includedNames := make(map[string]int)
// Set custom template funcs
for k, v := range e.CustomTemplateFuncs {
funcMap[k] = v
}
// Add the template-rendering functions here so we can close over t. // Add the template-rendering functions here so we can close over t.
funcMap["include"] = includeFun(t, includedNames) funcMap["include"] = includeFun(t, includedNames)
funcMap["tpl"] = tplFun(t, includedNames, e.Strict) funcMap["tpl"] = tplFun(t, includedNames, e.Strict)
@ -246,11 +251,6 @@ func (e Engine) initFunMap(t *template.Template) {
} }
} }
// Set custom template func, do it here to give opportunity to override standard functions
for k, v := range e.CustomTemplateFuncs {
funcMap[k] = v
}
t.Funcs(funcMap) t.Funcs(funcMap)
} }

@ -1310,6 +1310,10 @@ func TestRenderCustomTemplateFuncs(t *testing.T) {
Name: "templates/manifest", Name: "templates/manifest",
Data: []byte(`{{exclaim .Values.message}}`), Data: []byte(`{{exclaim .Values.message}}`),
}, },
{
Name: "templates/override",
Data: []byte(`{{ upper .Values.message }}`),
},
}, },
} }
v := chartutil.Values{ v := chartutil.Values{
@ -1327,6 +1331,9 @@ func TestRenderCustomTemplateFuncs(t *testing.T) {
"exclaim": func(input string) string { "exclaim": func(input string) string {
return input + "!!!" return input + "!!!"
}, },
"upper": func(s string) string {
return "custom:" + s
},
} }
// Create an engine instance and set the CustomTemplateFuncs. // Create an engine instance and set the CustomTemplateFuncs.
@ -1345,4 +1352,11 @@ func TestRenderCustomTemplateFuncs(t *testing.T) {
if rendered, ok := out[key]; !ok || rendered != expected { if rendered, ok := out[key]; !ok || rendered != expected {
t.Errorf("Expected %q, got %q", expected, rendered) t.Errorf("Expected %q, got %q", expected, rendered)
} }
// Verify that the rendered template used the custom "upper" function.
expected = "custom:hello"
key = "CustomFunc/templates/override"
if rendered, ok := out[key]; !ok || rendered != expected {
t.Errorf("Expected %q, got %q", expected, rendered)
}
} }

Loading…
Cancel
Save