mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
491 lines
7.4 KiB
Go
491 lines
7.4 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package merge2_test
|
|
|
|
import (
|
|
"sigs.k8s.io/kustomize/kyaml/yaml"
|
|
)
|
|
|
|
var listTestCases = []testCase{
|
|
{description: `strategic merge patch delete 1`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
$patch: delete
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
{description: `strategic merge patch delete 2`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
$patch: delete
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
{description: `merge k8s deployment containers - prepend`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo0
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
- name: foo0
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListPrepend,
|
|
},
|
|
},
|
|
{description: `merge k8s deployment containers - append`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo0
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo0
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
{description: `merge k8s deployment volumes - append`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: foo0
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: foo0
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
{description: `merge k8s deployment volumes - prepend`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: foo0
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
volumes:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
- name: foo0
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListPrepend,
|
|
},
|
|
},
|
|
{description: `merge k8s deployment containers -- $patch directive`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
- $patch: merge
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo4
|
|
- name: foo5
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
- name: foo4
|
|
- name: foo5
|
|
`,
|
|
},
|
|
{description: `replace k8s deployment containers -- $patch directive`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
- $patch: replace
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo4
|
|
- name: foo5
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
`,
|
|
},
|
|
{description: `remove k8s deployment containers -- $patch directive`,
|
|
source: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo1
|
|
- name: foo2
|
|
- name: foo3
|
|
- $patch: delete
|
|
`,
|
|
dest: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: foo4
|
|
- name: foo5
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
spec:
|
|
template:
|
|
spec: {}
|
|
`,
|
|
},
|
|
|
|
{description: `replace List -- different value in dest`,
|
|
source: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
dest: `
|
|
kind: Deployment
|
|
items:
|
|
- 0
|
|
- 1
|
|
`,
|
|
expected: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
|
|
{description: `replace List -- missing from dest`,
|
|
source: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
dest: `
|
|
kind: Deployment
|
|
`,
|
|
expected: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{description: `keep List -- same value in src and dest`,
|
|
source: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
dest: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
expected: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{description: `keep List -- unspecified in src`,
|
|
source: `
|
|
kind: Deployment
|
|
`,
|
|
dest: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
expected: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{description: `remove List -- null in src`,
|
|
source: `
|
|
kind: Deployment
|
|
items: null
|
|
`,
|
|
dest: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
expected: `
|
|
kind: Deployment
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{description: `remove list -- empty in src`,
|
|
source: `
|
|
kind: Deployment
|
|
items: []
|
|
`,
|
|
dest: `
|
|
kind: Deployment
|
|
items:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
`,
|
|
expected: `
|
|
kind: Deployment
|
|
items: []
|
|
`,
|
|
mergeOptions: yaml.MergeOptions{
|
|
ListIncreaseDirection: yaml.MergeOptionsListAppend,
|
|
},
|
|
},
|
|
}
|