Unverified Commit d325d2a9 authored by Helgi Þormar Þorbjörnsson's avatar Helgi Þormar Þorbjörnsson Committed by Matthew Fisher
Browse files

Return empty string instead of nil when linting on required (#4748)


* Return empty string instead of nil when linting on required

This allows lint to work in scenarios when required is used in secrets or it's output is passed to another function.
Due to lint mode no longer failing on missing value in required it is passing nil through which not all functions can accept.

Fixes #4747

Signed-off-by: default avatarHelgi Þorbjörnsson <helgith@gmail.com>

* Apply suggestions from code review

Co-Authored-By: default avatarhelgi <70530+helgi@users.noreply.github.com>
Signed-off-by: default avatarHelgi Þorbjörnsson <helgith@gmail.com>

* Add tests

Signed-off-by: default avatarHelgi Þorbjörnsson <helgith@gmail.com>
(cherry picked from commit 15703cb1)
No related merge requests found
Showing with 29 additions and 3 deletions
+29 -3
......@@ -159,9 +159,10 @@ func (e *Engine) alterFuncMap(t *template.Template, referenceTpls map[string]ren
if e.LintMode {
// Don't fail on missing required values when linting
log.Printf("[INFO] Missing required value: %s", warn)
return val, nil
return "", nil
}
return val, fmt.Errorf(warn)
// Convert nil to "" in case required is piped into other functions
return "", fmt.Errorf(warn)
} else if _, ok := val.(string); ok {
if val == "" {
if e.LintMode {
......
......@@ -466,7 +466,6 @@ func TestAlterFuncMap(t *testing.T) {
if err != nil {
t.Fatal(err)
}
expectStr := "All your base are belong to us"
if gotStr := outReq["conan/templates/quote"]; gotStr != expectStr {
t.Errorf("Expected %q, got %q (%v)", expectStr, gotStr, outReq)
......@@ -476,6 +475,32 @@ func TestAlterFuncMap(t *testing.T) {
t.Errorf("Expected %q, got %q (%v)", expectNum, gotNum, outReq)
}
// test required without passing in needed values with lint mode on
// verifies lint replaces required with an empty string (should not fail)
lintValues := chartutil.Values{
"Values": chartutil.Values{
"who": "us",
},
"Chart": reqChart.Metadata,
"Release": chartutil.Values{
"Name": "That 90s meme",
},
}
e := New()
e.LintMode = true
outReq, err = e.Render(reqChart, lintValues)
if err != nil {
t.Fatal(err)
}
expectStr = "All your base are belong to us"
if gotStr := outReq["conan/templates/quote"]; gotStr != expectStr {
t.Errorf("Expected %q, got %q (%v)", expectStr, gotStr, outReq)
}
expectNum = "All of them!"
if gotNum := outReq["conan/templates/bases"]; gotNum != expectNum {
t.Errorf("Expected %q, got %q (%v)", expectNum, gotNum, outReq)
}
tplChart := &chart.Chart{
Metadata: &chart.Metadata{Name: "TplFunction"},
Templates: []*chart.Template{
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment