From a01afa9fa0b239f61a6422f59d83b319509174c6 Mon Sep 17 00:00:00 2001 From: yugo kobayashi Date: Sun, 28 Aug 2022 16:53:36 +0000 Subject: [PATCH] update checker code in patchStrategicMerge --- api/types/kustomization.go | 7 ++- kustomize/commands/edit/fix/fix.go | 3 +- kustomize/commands/edit/fix/fix_test.go | 64 +++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 6 deletions(-) diff --git a/api/types/kustomization.go b/api/types/kustomization.go index 6c67d30fa94..4e7ac9e8787 100644 --- a/api/types/kustomization.go +++ b/api/types/kustomization.go @@ -7,8 +7,8 @@ import ( "bytes" "encoding/json" "fmt" - "strings" + "sigs.k8s.io/kustomize/kyaml/filesys" "sigs.k8s.io/yaml" ) @@ -218,7 +218,7 @@ func (k *Kustomization) FixKustomizationPostUnmarshalling() { // FixKustomizationPreMarshalling fixes things // that should occur after the kustomization file // has been processed. -func (k *Kustomization) FixKustomizationPreMarshalling() error { +func (k *Kustomization) FixKustomizationPreMarshalling(fSys filesys.FileSystem) error { // PatchesJson6902 should be under the Patches field. k.Patches = append(k.Patches, k.PatchesJson6902...) k.PatchesJson6902 = nil @@ -226,8 +226,7 @@ func (k *Kustomization) FixKustomizationPreMarshalling() error { if k.PatchesStrategicMerge != nil { for _, patchStrategicMerge := range k.PatchesStrategicMerge { // check this patch is file path select. - if strings.Count(string(patchStrategicMerge), "\n") < 1 && - (patchStrategicMerge[len(patchStrategicMerge)-5:] == ".yaml" || patchStrategicMerge[len(patchStrategicMerge)-4:] == ".yml") { + if _, err := fSys.ReadFile(string(patchStrategicMerge)); err == nil { // path patch k.Patches = append(k.Patches, Patch{Path: string(patchStrategicMerge)}) } else { diff --git a/kustomize/commands/edit/fix/fix.go b/kustomize/commands/edit/fix/fix.go index 69afb953b64..ba056557735 100644 --- a/kustomize/commands/edit/fix/fix.go +++ b/kustomize/commands/edit/fix/fix.go @@ -55,8 +55,7 @@ func RunFix(fSys filesys.FileSystem, w io.Writer) error { return err } - err = m.FixKustomizationPreMarshalling() - if err != nil { + if err := m.FixKustomizationPreMarshalling(fSys); err != nil { return err } diff --git a/kustomize/commands/edit/fix/fix_test.go b/kustomize/commands/edit/fix/fix_test.go index 8987f22a550..2a38b6b0baa 100644 --- a/kustomize/commands/edit/fix/fix_test.go +++ b/kustomize/commands/edit/fix/fix_test.go @@ -32,6 +32,7 @@ func TestFixCommand(t *testing.T) { tests := []struct { name string input string + files map[string]string expected string }{ { @@ -170,6 +171,21 @@ kind: Kustomization patchesStrategicMerge: - deploy.yaml `, + files: map[string]string{ + "deploy.yaml": ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx +spec: + template: + spec: + containers: + - name: nginx + env: + - name: CONFIG_FILE_PATH + value: home.yaml`, + }, expected: ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -183,6 +199,21 @@ patches: patchesStrategicMerge: - deploy.yml `, + files: map[string]string{ + "deploy.yml": ` +apiVersion: apps/v1 +kind: Deployment +metadata: +name: nginx +spec: +template: +spec: +containers: + - name: nginx + env: + - name: CONFIG_FILE_PATH + value: home.yaml`, + }, expected: ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -209,6 +240,21 @@ patchesStrategicMerge: - name: CONFIG_FILE_PATH value: home.yaml `, + files: map[string]string{ + "deploy.yaml": ` +apiVersion: apps/v1 +kind: Deployment +metadata: +name: nginx +spec: +template: +spec: +containers: +- name: nginx +env: +- name: CONFIG_FILE_PATH + value: home.yaml`, + }, expected: ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -239,6 +285,21 @@ patchesJson6902: target: kind: Deployment `, + files: map[string]string{ + "deploy.yaml": ` +apiVersion: apps/v1 +kind: Deployment +metadata: +name: nginx +spec: +template: +spec: +containers: +- name: nginx +env: +- name: CONFIG_FILE_PATH + value: home.yaml`, + }, expected: ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -310,6 +371,9 @@ kind: Kustomization for _, test := range tests { fSys := filesys.MakeFsInMemory() testutils_test.WriteTestKustomizationWith(fSys, []byte(test.input)) + for filename, content := range test.files { + require.NoError(t, fSys.WriteFile(filename, []byte(content))) + } cmd := NewCmdFix(fSys, os.Stdout) require.NoError(t, cmd.RunE(cmd, nil))