diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index 73d645264..0858184d7 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -123,6 +123,7 @@ func Templates(linter *support.Linter, values map[string]interface{}, namespace // linter.RunLinterRule(support.WarningSev, fpath, validateQuotes(string(preExecutedTemplate))) renderedContent := renderedContentMap[path.Join(chart.Name(), fileName)] + renderedContent = cleanseRenderedContent(renderedContent) if strings.TrimSpace(renderedContent) != "" { linter.RunLinterRule(support.WarningSev, fpath, validateTopIndentLevel(renderedContent)) var yamlStruct K8sYamlStruct @@ -166,6 +167,17 @@ func validateTopIndentLevel(content string) error { return scanner.Err() } +func cleanseRenderedContent(renderedContent string) string { + renderedArray := strings.Split(strings.Replace(renderedContent, "\r\n", "\n", -1), "\n") + cleansedContent := []string{} + for _, line := range renderedArray { + if !(strings.HasPrefix(line, "#") || strings.HasPrefix(line, "---")) { + cleansedContent = append(cleansedContent, line) + } + } + return strings.Join(cleansedContent, "\n") +} + // Validation functions func validateTemplatesDir(templatesPath string) error { if fi, err := os.Stat(templatesPath); err != nil { diff --git a/pkg/lint/rules/template_test.go b/pkg/lint/rules/template_test.go index b4397851b..5783a6e4d 100644 --- a/pkg/lint/rules/template_test.go +++ b/pkg/lint/rules/template_test.go @@ -330,5 +330,27 @@ func TestValidateTopIndentLevel(t *testing.T) { t.Errorf("Expected %t for %q", shouldFail, doc) } } +} +func TestCleanseRenderedContent(t *testing.T) { + input := ` +#comments about the template file +apiVersion: v1 +kind: ConfigMap +# Metadata +metadata: + name: mychart-configmap-1 + namespace: default +` + expect := ` +apiVersion: v1 +kind: ConfigMap +metadata: + name: mychart-configmap-1 + namespace: default +` + output := cleanseRenderedContent(input) + if output != expect { + t.Errorf("Expected : %+v , but got : %+v", expect, output) + } } diff --git a/pkg/lint/rules/testdata/albatross/templates/blank.yaml b/pkg/lint/rules/testdata/albatross/templates/blank.yaml new file mode 100644 index 000000000..d1fe61f85 --- /dev/null +++ b/pkg/lint/rules/testdata/albatross/templates/blank.yaml @@ -0,0 +1,25 @@ +# comment on first line +{{- if .Values.condition }} +apiVersion: v1 +kind: ConfigMap +# Metadata +metadata: + name: mychart-configmap-1 + namespace: default +data: + myvalue: "Hello World" +{{- end }} + +--- + +# comment on first line +{{- if .Values.condition }} +apiVersion: v1 +kind: ConfigMap +# Metadata +metadata: + name: mychart-configmap-2 + namespace: default +data: + myvalue: "Hello World" +{{- end }} \ No newline at end of file diff --git a/pkg/lint/rules/testdata/albatross/values.yaml b/pkg/lint/rules/testdata/albatross/values.yaml index 74cc6a0dc..91bfbc036 100644 --- a/pkg/lint/rules/testdata/albatross/values.yaml +++ b/pkg/lint/rules/testdata/albatross/values.yaml @@ -1 +1,2 @@ name: "mariner" +condition: false