Commit 15703cb1 authored by Helgi Þormar Þorbjörnsson's avatar Helgi Þormar Þorbjörnsson Committed by Matthew Fisher

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: 's avatarHelgi Þorbjörnsson <helgith@gmail.com>

* Apply suggestions from code review
Co-Authored-By: 's avatarhelgi <70530+helgi@users.noreply.github.com>
Signed-off-by: 's avatarHelgi Þorbjörnsson <helgith@gmail.com>

* Add tests
Signed-off-by: 's avatarHelgi Þorbjörnsson <helgith@gmail.com>
parent 146c61af
......@@ -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{
......
Markdown is supported
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