diff --git a/pkg/engine/renderer/parser.go b/pkg/engine/renderer/parser.go index a6fe1bf9a..2d912751b 100644 --- a/pkg/engine/renderer/parser.go +++ b/pkg/engine/renderer/parser.go @@ -14,7 +14,7 @@ import ( // If the type is not known in the scheme, it tries to parse it as Unstructured // TODO(av) could we use something else than a global scheme here? Should we somehow inject it? func YamlToObject(yaml string) (objs []runtime.Object, err error) { - sepYamlfiles := strings.Split(yaml, "---") + sepYamlfiles := strings.Split(yaml, "\n---\n") for _, f := range sepYamlfiles { if f == "\n" || f == "" { // ignore empty cases diff --git a/pkg/engine/renderer/parser_test.go b/pkg/engine/renderer/parser_test.go index 03c807f4d..993c6f5e8 100644 --- a/pkg/engine/renderer/parser_test.go +++ b/pkg/engine/renderer/parser_test.go @@ -7,13 +7,17 @@ import ( ) func TestParseKubernetesObjects_UnknownType(t *testing.T) { - _, err := YamlToObject(`apiVersion: monitoring.coreos.com/v1 + objects, err := YamlToObject(`apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: app: prometheus-operator release: prometheus-kubeaddons name: spark-cluster-monitor + annotations: + foo: |- + --- + multiline spec: endpoints: - interval: 5s @@ -25,6 +29,7 @@ spec: if err != nil { t.Errorf("Expecting no error but got %s", err) } + assert.Equal(t, 1, len(objects)) } func TestParseKubernetesObjects_KnownType(t *testing.T) {