mirror of https://github.com/helm/helm
helm template trims the release manifest with TrimSpace, losing intentional trailing newlines from its final document. Its hook, --show-only and file writers can instead add an extra newline. Keep the assembled output as []byte and write it directly, without trimming. For hooks, selected manifests and output files, remove at most one newline before the format string restores it. Each document stays newline-terminated without adding or dropping authored blank lines. Add golden-file coverage for stdout, --no-hooks, reordered --show-only and --output-dir. A fixture chart covers zero, one and two trailing newlines, including multiple regular and hook documents per file. Signed-off-by: 胡玮文 <huweiwen.hww@alibaba-inc.com>pull/32683/head
parent
bcc3acd9fe
commit
2ceaa23818
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/hooks.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-one-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/hooks.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-two-newlines
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-no-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-one-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-two-newlines
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline-hook.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-no-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-no-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-one-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-two-newlines
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/hooks.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-one-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/hooks.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-two-newlines
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline-hook.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-no-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-one-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-two-newlines
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-no-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-no-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-one-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/regular.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-two-newlines
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/00-no-newline-hook.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-no-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/hooks.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-one-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
# Source: trailing-newlines/templates/hooks.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-two-newlines
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: trailing-newlines
|
||||||
|
version: 0.1.0
|
||||||
@ -0,0 +1 @@
|
|||||||
|
The `00-no-newline*.yaml` templates intentionally have no final newline. The other templates contain two documents ending in one and two newlines, respectively. Keep chomping (`|+`) makes these newlines part of the ConfigMap value.
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-no-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-no-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-one-newline
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: hook-two-newlines
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-install
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-one-newline
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: regular-two-newlines
|
||||||
|
data:
|
||||||
|
cfg: |+
|
||||||
|
line1
|
||||||
|
line2
|
||||||
|
|
||||||
Loading…
Reference in new issue