kyaml: initial support for yaml and resource manipulation

This commit is contained in:
Phillip Wittrock
2019-11-04 11:27:47 -08:00
parent 588297f1f9
commit efd7c8e3f7
92 changed files with 13733 additions and 0 deletions

View File

@@ -0,0 +1,422 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package merge3_test
var elementTestCases = []testCase{
//
// Test Case
//
{`Add an element to an existing list`,
`
kind: Deployment
containers:
- name: foo
image: foo:1
`,
`
kind: Deployment
containers:
- name: foo
image: foo:1
- name: baz
image: baz:2
`,
`
kind: Deployment
containers:
- name: foo
image: foo:1
`,
`
kind: Deployment
containers:
- name: foo
image: foo:1
- image: baz:2
name: baz
`, nil},
//
// Test Case
//
{`Add an element to a non-existing list`,
`
kind: Deployment`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
`,
`
kind: Deployment
containers:
- image: foo:bar
name: foo
`, nil},
{`Add an element to a non-existing list, existing in dest`,
`
kind: Deployment`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers:
- name: baz
image: baz:bar
`,
`
kind: Deployment
containers:
- name: baz
image: baz:bar
- image: foo:bar
name: foo
`, nil},
//
// Test Case
// TODO(pwittrock): Figure out if there is something better we can do here
// This element is missing from the destination -- only the new fields are added
{`Add a field to the element, element missing from dest`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run.sh
`,
`
kind: Deployment
`,
`
kind: Deployment
containers:
- command:
- run.sh
name: foo
`, nil},
//
// Test Case
//
{`Update a field on the elem, element missing from the dest`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run.sh
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run2.sh
`,
`
kind: Deployment
`,
`
kind: Deployment
containers:
- command:
- run2.sh
name: foo
`, nil},
//
// Test Case
//
{`Update a field on the elem, element present in the dest`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run2.sh']
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run2.sh
`, nil},
//
// Test Case
//
{`Add a field on the elem, element present in the dest`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run2.sh']
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run2.sh
`, nil},
//
// Test Case
//
{`Add a field on the elem, element and field present in the dest`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run2.sh']
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run2.sh
`, nil},
//
// Test Case
//
{`Ignore an element`,
`
kind: Deployment
containers: {}
`,
`
kind: Deployment
containers: {}
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`, nil},
//
// Test Case
//
{`Leave deleted`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
`,
`
kind: Deployment
`,
`
kind: Deployment
`, nil},
//
// Test Case
//
{`Remove an element -- matching`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
`, nil},
//
// Test Case
//
{`Remove an element -- field missing from update`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
`,
`
kind: Deployment
`, nil},
//
// Test Case
//
{`Remove an element -- element missing`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
- name: baz
image: baz:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
- name: baz
image: baz:bar
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command:
- run.sh
`, nil},
//
// Test Case
//
{`Remove an element -- empty containers`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
containers: {}
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
`,
`
kind: Deployment
`, nil},
//
// Test Case
//
{`Remove an element -- missing list field`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
`,
`
kind: Deployment
`,
`
kind: Deployment
containers:
- name: foo
image: foo:bar
command: ['run.sh']
`,
`
kind: Deployment
`, nil},
}