mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 01:14:22 +00:00
Merge pull request #2971 from etefera/fix-broken-patches-change
Fix unintended patches change in all Kustomization writes.
This commit is contained in:
@@ -39,5 +39,6 @@ func RunFix(fSys filesys.FileSystem) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m.FixKustomizationPreMarshalling()
|
||||||
return mf.Write(m)
|
return mf.Write(m)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
"sigs.k8s.io/kustomize/api/filesys"
|
"sigs.k8s.io/kustomize/api/filesys"
|
||||||
testutils_test "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/testutils"
|
testutils_test "sigs.k8s.io/kustomize/kustomize/v3/internal/commands/testutils"
|
||||||
)
|
)
|
||||||
@@ -31,3 +32,104 @@ func TestFix(t *testing.T) {
|
|||||||
t.Errorf("expected kind in kustomization")
|
t.Errorf("expected kind in kustomization")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFixOutdatedPatchesFieldTitle(t *testing.T) {
|
||||||
|
kustomizationContentWithOutdatedPatchesFieldTitle := []byte(`
|
||||||
|
patchesJson6902:
|
||||||
|
- path: patch1.yaml
|
||||||
|
target:
|
||||||
|
kind: Service
|
||||||
|
- path: patch2.yaml
|
||||||
|
target:
|
||||||
|
group: apps
|
||||||
|
kind: Deployment
|
||||||
|
version: v1
|
||||||
|
`)
|
||||||
|
|
||||||
|
expected := []byte(`
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
patches:
|
||||||
|
- path: patch1.yaml
|
||||||
|
target:
|
||||||
|
kind: Service
|
||||||
|
- path: patch2.yaml
|
||||||
|
target:
|
||||||
|
group: apps
|
||||||
|
kind: Deployment
|
||||||
|
version: v1
|
||||||
|
`)
|
||||||
|
fSys := filesys.MakeFsInMemory()
|
||||||
|
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle)
|
||||||
|
cmd := NewCmdFix(fSys)
|
||||||
|
err := cmd.RunE(cmd, nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected cmd error: %v", err)
|
||||||
|
}
|
||||||
|
content, err := testutils_test.ReadTestKustomization(fSys)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected read error: %v", err)
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(content), "apiVersion: ") {
|
||||||
|
t.Errorf("expected apiVersion in kustomization")
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(content), "kind: Kustomization") {
|
||||||
|
t.Errorf("expected kind in kustomization")
|
||||||
|
}
|
||||||
|
|
||||||
|
if diff := cmp.Diff(expected, content); diff != "" {
|
||||||
|
t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRenameAndKeepOutdatedPatchesField(t *testing.T) {
|
||||||
|
kustomizationContentWithOutdatedPatchesFieldTitle := []byte(`
|
||||||
|
patchesJson6902:
|
||||||
|
- path: patch1.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
patches:
|
||||||
|
- path: patch2.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
- path: patch3.yaml
|
||||||
|
target:
|
||||||
|
kind: Service
|
||||||
|
`)
|
||||||
|
|
||||||
|
expected := []byte(`
|
||||||
|
patches:
|
||||||
|
- path: patch2.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
- path: patch3.yaml
|
||||||
|
target:
|
||||||
|
kind: Service
|
||||||
|
- path: patch1.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
`)
|
||||||
|
fSys := filesys.MakeFsInMemory()
|
||||||
|
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle)
|
||||||
|
cmd := NewCmdFix(fSys)
|
||||||
|
err := cmd.RunE(cmd, nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected cmd error: %v", err)
|
||||||
|
}
|
||||||
|
content, err := testutils_test.ReadTestKustomization(fSys)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected read error: %v", err)
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(content), "apiVersion: ") {
|
||||||
|
t.Errorf("expected apiVersion in kustomization")
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(content), "kind: Kustomization") {
|
||||||
|
t.Errorf("expected kind in kustomization")
|
||||||
|
}
|
||||||
|
|
||||||
|
if diff := cmp.Diff(expected, content); diff != "" {
|
||||||
|
t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -145,6 +145,47 @@ func TestSetImage(t *testing.T) {
|
|||||||
" newTag: my-tag2",
|
" newTag: my-tag2",
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
description: "override file with patch",
|
||||||
|
given: given{
|
||||||
|
args: []string{"image1=foo.bar.foo:8800/foo/image1:foo-bar"},
|
||||||
|
infileImages: []string{
|
||||||
|
"images:",
|
||||||
|
"- name: image1",
|
||||||
|
" newName: my-image1",
|
||||||
|
" newTag: my-tag",
|
||||||
|
"- name: image2",
|
||||||
|
" newName: my-image2",
|
||||||
|
" newTag: my-tag2",
|
||||||
|
"patchesJson6902:",
|
||||||
|
"- patch: |-",
|
||||||
|
" - op: remove",
|
||||||
|
" path: /spec/selector",
|
||||||
|
" target:",
|
||||||
|
" kind: Service",
|
||||||
|
" name: foo",
|
||||||
|
" version: v1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expected: expected{
|
||||||
|
fileOutput: []string{
|
||||||
|
"images:",
|
||||||
|
"- name: image1",
|
||||||
|
" newName: foo.bar.foo:8800/foo/image1",
|
||||||
|
" newTag: foo-bar",
|
||||||
|
"- name: image2",
|
||||||
|
" newName: my-image2",
|
||||||
|
" newTag: my-tag2",
|
||||||
|
"patchesJson6902:",
|
||||||
|
"- patch: |-",
|
||||||
|
" - op: remove",
|
||||||
|
" path: /spec/selector",
|
||||||
|
" target:",
|
||||||
|
" kind: Service",
|
||||||
|
" name: foo",
|
||||||
|
" version: v1",
|
||||||
|
}},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
description: "override new tag and new name with just a new tag",
|
description: "override new tag and new name with just a new tag",
|
||||||
given: given{
|
given: given{
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ func (mf *kustomizationFile) Write(kustomization *types.Kustomization) error {
|
|||||||
if kustomization == nil {
|
if kustomization == nil {
|
||||||
return errors.New("util: kustomization file arg is nil")
|
return errors.New("util: kustomization file arg is nil")
|
||||||
}
|
}
|
||||||
kustomization.FixKustomizationPreMarshalling()
|
|
||||||
data, err := mf.marshal(kustomization)
|
data, err := mf.marshal(kustomization)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -338,103 +338,6 @@ kind: Kustomization
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRenameAndKeepOutdatedPatchesField(t *testing.T) {
|
|
||||||
kustomizationContentWithOutdatedPatchesFieldTitle := []byte(`
|
|
||||||
patchesJson6902:
|
|
||||||
- path: patch1.yaml
|
|
||||||
target:
|
|
||||||
kind: Deployment
|
|
||||||
patches:
|
|
||||||
- path: patch2.yaml
|
|
||||||
target:
|
|
||||||
kind: Deployment
|
|
||||||
- path: patch3.yaml
|
|
||||||
target:
|
|
||||||
kind: Service
|
|
||||||
`)
|
|
||||||
|
|
||||||
expected := []byte(`
|
|
||||||
patches:
|
|
||||||
- path: patch2.yaml
|
|
||||||
target:
|
|
||||||
kind: Deployment
|
|
||||||
- path: patch3.yaml
|
|
||||||
target:
|
|
||||||
kind: Service
|
|
||||||
- path: patch1.yaml
|
|
||||||
target:
|
|
||||||
kind: Deployment
|
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
||||||
kind: Kustomization
|
|
||||||
`)
|
|
||||||
fSys := filesys.MakeFsInMemory()
|
|
||||||
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle)
|
|
||||||
mf, err := NewKustomizationFile(fSys)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected Error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
kustomization, err := mf.Read()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected Error: %v", err)
|
|
||||||
}
|
|
||||||
if err = mf.Write(kustomization); err != nil {
|
|
||||||
t.Fatalf("Unexpected Error: %v", err)
|
|
||||||
}
|
|
||||||
bytes, _ := fSys.ReadFile(mf.path)
|
|
||||||
|
|
||||||
if diff := cmp.Diff(expected, bytes); diff != "" {
|
|
||||||
t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFixOutdatedPatchesFieldTitle(t *testing.T) {
|
|
||||||
kustomizationContentWithOutdatedPatchesFieldTitle := []byte(`
|
|
||||||
patchesJson6902:
|
|
||||||
- path: patch1.yaml
|
|
||||||
target:
|
|
||||||
kind: Service
|
|
||||||
- path: patch2.yaml
|
|
||||||
target:
|
|
||||||
group: apps
|
|
||||||
kind: Deployment
|
|
||||||
version: v1
|
|
||||||
`)
|
|
||||||
|
|
||||||
expected := []byte(`
|
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
||||||
kind: Kustomization
|
|
||||||
patches:
|
|
||||||
- path: patch1.yaml
|
|
||||||
target:
|
|
||||||
kind: Service
|
|
||||||
- path: patch2.yaml
|
|
||||||
target:
|
|
||||||
group: apps
|
|
||||||
kind: Deployment
|
|
||||||
version: v1
|
|
||||||
`)
|
|
||||||
fSys := filesys.MakeFsInMemory()
|
|
||||||
testutils_test.WriteTestKustomizationWith(fSys, kustomizationContentWithOutdatedPatchesFieldTitle)
|
|
||||||
mf, err := NewKustomizationFile(fSys)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected Error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
kustomization, err := mf.Read()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected Error: %v", err)
|
|
||||||
}
|
|
||||||
if err = mf.Write(kustomization); err != nil {
|
|
||||||
t.Fatalf("Unexpected Error: %v", err)
|
|
||||||
}
|
|
||||||
bytes, _ := fSys.ReadFile(mf.path)
|
|
||||||
|
|
||||||
if diff := cmp.Diff(expected, bytes); diff != "" {
|
|
||||||
t.Errorf("Mismatch (-expected, +actual):\n%s", diff)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUnknownFieldInKustomization(t *testing.T) {
|
func TestUnknownFieldInKustomization(t *testing.T) {
|
||||||
kContent := []byte(`
|
kContent := []byte(`
|
||||||
foo:
|
foo:
|
||||||
|
|||||||
Reference in New Issue
Block a user