From c4a8a998345b678cfd25f0c36fe6251e7b0251af Mon Sep 17 00:00:00 2001 From: natasha41575 Date: Fri, 3 Dec 2021 15:03:04 -0800 Subject: [PATCH 1/2] add regression tests for multiline configmap with space --- api/krusty/configmaps_test.go | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/api/krusty/configmaps_test.go b/api/krusty/configmaps_test.go index 721979983..31bccff2a 100644 --- a/api/krusty/configmaps_test.go +++ b/api/krusty/configmaps_test.go @@ -572,3 +572,71 @@ metadata: name: test-k9cc55dfm5 `) } + +// regression test for https://github.com/kubernetes-sigs/kustomize/issues/4287 +func TestMultilineDataEndsWithSpace(t *testing.T) { + th := kusttest_test.MakeHarness(t) + th.WriteK(".", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +configMapGenerator: + - name: config_bla + files: + - cfg.text=cfg.text +`) + th.WriteF("cfg.text", `bla +bla +bla +`) + + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected( + m, `apiVersion: v1 +data: + cfg.text: "bla\nbla\nbla \n" +kind: ConfigMap +metadata: + name: config_bla-d6m295b8c5 +`) +} + +// regression test to record the behavior prior to the fix for https://github.com/kubernetes-sigs/kustomize/issues/4287 +// so that the fix does not affect leading and trailing newlines in ConfigMap data +func TestMultilineDataEndsLeadingAndTrailingNewlines(t *testing.T) { + th := kusttest_test.MakeHarness(t) + th.WriteK(".", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +configMapGenerator: + - name: config_bla + files: + - cfg.text=cfg.text +`) + th.WriteF("cfg.text", ` + +bla +bla +bla + + + +`) + + m := th.Run(".", th.MakeDefaultOptions()) + th.AssertActualEqualsExpected( + m, `apiVersion: v1 +data: + cfg.text: |2+ + + + bla + bla + bla + + + +kind: ConfigMap +metadata: + name: config_bla-8dm6c68g22 +`) +} From a3d547ccd3bac708a558d8823a734d5e5a388bfa Mon Sep 17 00:00:00 2001 From: natasha41575 Date: Fri, 3 Dec 2021 15:16:35 -0800 Subject: [PATCH 2/2] fix issue with multiline configmap data with extra space --- api/internal/generators/utils.go | 7 ++++++- api/krusty/baseandoverlaymedium_test.go | 8 +++++--- api/krusty/configmaps_test.go | 9 ++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/api/internal/generators/utils.go b/api/internal/generators/utils.go index 82040d420..8909ab894 100644 --- a/api/internal/generators/utils.go +++ b/api/internal/generators/utils.go @@ -5,6 +5,7 @@ package generators import ( "fmt" + "strings" "github.com/go-errors/errors" "sigs.k8s.io/kustomize/api/ifc" @@ -50,7 +51,11 @@ func makeValidatedDataMap( return nil, errors.Errorf( "configmap %s illegally repeats the key `%s`", name, p.Key) } - knownKeys[p.Key] = p.Value + lines := strings.Split(p.Value, "\n") + for i := range lines { + lines[i] = strings.TrimSuffix(lines[i], " ") + } + knownKeys[p.Key] = strings.Join(lines, "\n") } return knownKeys, nil } diff --git a/api/krusty/baseandoverlaymedium_test.go b/api/krusty/baseandoverlaymedium_test.go index cfa1afa48..bf5eecc7c 100644 --- a/api/krusty/baseandoverlaymedium_test.go +++ b/api/krusty/baseandoverlaymedium_test.go @@ -292,8 +292,10 @@ metadata: --- apiVersion: v1 data: - nonsense: "Lorem ipsum dolor sit amet, consectetur\nadipiscing elit, sed do eiusmod - tempor\nincididunt ut labore et dolore magna aliqua. \n" + nonsense: | + Lorem ipsum dolor sit amet, consectetur + adipiscing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. kind: ConfigMap metadata: annotations: @@ -302,6 +304,6 @@ metadata: app: mungebot org: kubernetes repo: test-infra - name: test-infra-app-config-49d6f5h7b5 + name: test-infra-app-config-4thktg822m `) } diff --git a/api/krusty/configmaps_test.go b/api/krusty/configmaps_test.go index 31bccff2a..d7be3f58f 100644 --- a/api/krusty/configmaps_test.go +++ b/api/krusty/configmaps_test.go @@ -593,15 +593,18 @@ bla th.AssertActualEqualsExpected( m, `apiVersion: v1 data: - cfg.text: "bla\nbla\nbla \n" + cfg.text: | + bla + bla + bla kind: ConfigMap metadata: - name: config_bla-d6m295b8c5 + name: config_bla-4k548khbf5 `) } // regression test to record the behavior prior to the fix for https://github.com/kubernetes-sigs/kustomize/issues/4287 -// so that the fix does not affect leading and trailing newlines in ConfigMap data +// to ensure that the fix does not affect leading and trailing newlines in ConfigMap data func TestMultilineDataEndsLeadingAndTrailingNewlines(t *testing.T) { th := kusttest_test.MakeHarness(t) th.WriteK(".", `