From 8982b57e5e4b69630e3b4c23414e902bd5659170 Mon Sep 17 00:00:00 2001 From: Stepan Paksashvili Date: Tue, 15 Apr 2025 01:55:28 +0300 Subject: [PATCH] feat(pkg/engine): and custom funcs overriding test Signed-off-by: Stepan Paksashvili --- pkg/engine/engine.go | 10 +++++----- pkg/engine/engine_test.go | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index ea1e1d2af..eaf2ca856 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -196,6 +196,11 @@ func (e Engine) initFunMap(t *template.Template) { funcMap := funcMap() 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. funcMap["include"] = includeFun(t, includedNames) 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) } diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index cab1615bd..bf27f982f 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -1310,6 +1310,10 @@ func TestRenderCustomTemplateFuncs(t *testing.T) { Name: "templates/manifest", Data: []byte(`{{exclaim .Values.message}}`), }, + { + Name: "templates/override", + Data: []byte(`{{ upper .Values.message }}`), + }, }, } v := chartutil.Values{ @@ -1327,6 +1331,9 @@ func TestRenderCustomTemplateFuncs(t *testing.T) { "exclaim": func(input string) string { return input + "!!!" }, + "upper": func(s string) string { + return "custom:" + s + }, } // 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 { 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) + } }