Skip to content

Commit

Permalink
consider to handle multiple new line at EOF
Browse files Browse the repository at this point in the history
  • Loading branch information
kurochan committed Dec 31, 2022
1 parent d76d14d commit 0e250b1
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 8 deletions.
6 changes: 2 additions & 4 deletions pkg/app/piped/platformprovider/kubernetes/manifest.go
Expand Up @@ -224,15 +224,13 @@ func ParseManifests(data string) ([]Manifest, error) {
manifests = make([]Manifest, 0, len(parts))
)

newLineAtEOF := strings.HasSuffix(data, "\n")
for i, part := range parts {
// Ignore all the cases where no content between separator.
part = strings.TrimSpace(part)
if len(part) == 0 {
if len(strings.TrimSpace(part)) == 0 {
continue
}
// Append new line which trim by document separator.
if i != len(parts)-1 || newLineAtEOF {
if i != len(parts)-1 {
part += "\n"
}
var obj unstructured.Unstructured
Expand Down
84 changes: 80 additions & 4 deletions pkg/app/piped/platformprovider/kubernetes/manifest_test.go
Expand Up @@ -81,28 +81,104 @@ metadata:
}),
},
},
{
name: "contains new line at the end of file",
manifests: `
apiVersion: v1
kind: Kind1
metadata:
name: config
extra: |
single-new-line
`,
want: []Manifest{
maker("config", "Kind1", map[string]interface{}{
"name": "config",
"extra": "single-new-line\n",
}),
},
},
{
name: "not contains new line at the end of file",
manifests: `
apiVersion: v1
kind: Kind1
metadata:
name: config
extra: |
no-new-line`,
want: []Manifest{
maker("config", "Kind1", map[string]interface{}{
"name": "config",
"extra": "no-new-line",
}),
},
},
{
name: "multiple manifests",
manifests: `
apiVersion: v1
kind: Kind1
metadata:
name: config1
extra: |-
no-new-line
---
apiVersion: v1
kind: Kind2
metadata:
name: config2
extra: |
single-new-line-1
---
apiVersion: v1
kind: Kind3
metadata:
name: config3
`,
extra: |
single-new-line-2
---
apiVersion: v1
kind: Kind4
metadata:
name: config4
extra: |+
multiple-new-line-1
---
apiVersion: v1
kind: Kind5
metadata:
name: config5
extra: |+
multiple-new-line-2
`,
want: []Manifest{
maker("config1", "Kind1", map[string]interface{}{"name": "config1"}),
maker("config2", "Kind2", map[string]interface{}{"name": "config2"}),
maker("config3", "Kind3", map[string]interface{}{"name": "config3"}),
maker("config1", "Kind1", map[string]interface{}{
"name": "config1",
"extra": "no-new-line",
}),
maker("config2", "Kind2", map[string]interface{}{
"name": "config2",
"extra": "single-new-line-1\n",
}),
maker("config3", "Kind3", map[string]interface{}{
"name": "config3",
"extra": "single-new-line-2\n",
}),
maker("config4", "Kind4", map[string]interface{}{
"name": "config4",
"extra": "multiple-new-line-1\n\n\n",
}),
maker("config5", "Kind5", map[string]interface{}{
"name": "config5",
"extra": "multiple-new-line-2\n\n\n",
}),
},
},
}
Expand Down

0 comments on commit 0e250b1

Please sign in to comment.