Fix 'helm template' to also print invalid yaml

Signed-off-by: Reinhard Naegele <unguiculus@gmail.com>
pull/7556/head
Reinhard Naegele 5 years ago
parent 593ea3fb12
commit 2a73967ca2

@ -64,10 +64,10 @@ func newTemplateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
client.APIVersions = chartutil.VersionSet(extraAPIs) client.APIVersions = chartutil.VersionSet(extraAPIs)
client.IncludeCRDs = includeCrds client.IncludeCRDs = includeCrds
rel, err := runInstall(args, client, valueOpts, out) rel, err := runInstall(args, client, valueOpts, out)
if err != nil {
return err
}
// We ignore a potential error here because we always want to print the YAML,
// even if it is not valid. The error is still returned afterwards.
if rel != nil {
var manifests bytes.Buffer var manifests bytes.Buffer
fmt.Fprintln(&manifests, strings.TrimSpace(rel.Manifest)) fmt.Fprintln(&manifests, strings.TrimSpace(rel.Manifest))
@ -113,8 +113,9 @@ func newTemplateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
} else { } else {
fmt.Fprintf(out, "%s", manifests.String()) fmt.Fprintf(out, "%s", manifests.String())
} }
}
return nil return err
}, },
} }

@ -102,6 +102,12 @@ func TestTemplateCmd(t *testing.T) {
// don't accidentally get the expected result. // don't accidentally get the expected result.
repeat: 10, repeat: 10,
}, },
{
name: "chart with template with invalid yaml",
cmd: fmt.Sprintf("template '%s'", "testdata/testcharts/chart-with-template-with-invalid-yaml"),
wantError: true,
golden: "output/template-with-invalid-yaml.txt",
},
} }
runTestCmd(t, tests) runTestCmd(t, tests)
} }

@ -0,0 +1,13 @@
---
# Source: chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: "RELEASE-NAME-my-alpine"
spec:
containers:
- name: waiter
image: "alpine:3.9"
command: ["/bin/sleep","9000"]
invalid
Error: YAML parse error on chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml: error converting YAML to JSON: yaml: line 11: could not find expected ':'

@ -0,0 +1,8 @@
apiVersion: v1
description: Deploy a basic Alpine Linux pod
home: https://helm.sh/helm
name: chart-with-template-with-invalid-yaml
sources:
- https://github.com/helm/helm
version: 0.1.0
type: application

@ -0,0 +1,13 @@
#Alpine: A simple Helm chart
Run a single pod of Alpine Linux.
This example was generated using the command `helm create alpine`.
The `templates/` directory contains a very simple pod resource with a
couple of parameters.
The `values.yaml` file contains the default values for the
`alpine-pod.yaml` template.
You can install this example using `helm install ./alpine`.

@ -0,0 +1,10 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{.Release.Name}}-{{.Values.Name}}"
spec:
containers:
- name: waiter
image: "alpine:3.9"
command: ["/bin/sleep","9000"]
invalid
Loading…
Cancel
Save