Files
kustomize/kyaml/yaml/merge2/list_test.go
2020-09-30 10:52:47 -07:00

383 lines
5.2 KiB
Go

// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package merge2_test
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
`,
},
{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
`,
},
{description: `merge k8s deployment containers`,
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
`,
},
{description: `merge k8s deployment volumes`,
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
`,
},
{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
`,
},
{description: `replace List -- missing from dest`,
source: `
kind: Deployment
items:
- 1
- 2
- 3
`,
dest: `
kind: Deployment
`,
expected: `
kind: Deployment
items:
- 1
- 2
- 3
`,
},
//
// 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
`,
},
//
// 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
`,
},
//
// Test Case
//
{description: `remove List -- null in src`,
source: `
kind: Deployment
items: null
`,
dest: `
kind: Deployment
items:
- 1
- 2
- 3
`,
expected: `
kind: Deployment
`,
},
//
// Test Case
//
{description: `remove list -- empty in src`,
source: `
kind: Deployment
items: []
`,
dest: `
kind: Deployment
items:
- 1
- 2
- 3
`,
expected: `
kind: Deployment
items: []
`,
},
}