Files
kustomize/kyaml/yaml/merge3/list_test.go
2020-08-15 03:46:33 -07:00

340 lines
3.7 KiB
Go

// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package merge3_test
var listTestCases = []testCase{
// List Field Test Cases
//
// Test Case
//
{
description: `Replace list`,
origin: `
list:
- 1
- 2
- 3`,
update: `
list:
- 2
- 3
- 4`,
local: `
list:
- 1
- 2
- 3`,
expected: `
list:
- 2
- 3
- 4`},
//
// Test Case
//
{
description: `Add an updated list`,
origin: `
apiVersion: apps/v1
list: # old value
- 1
- 2
- 3
`,
update: `
apiVersion: apps/v1
list: # new value
- 2
- 3
- 4
`,
local: `
apiVersion: apps/v1`,
expected: `
apiVersion: apps/v1
list: # new value
- 2
- 3
- 4
`},
//
// Test Case
//
{
description: `Update comment`,
origin: `
list: # comment
- 1
- 2
- 3`,
update: `
list: # updated comment
- 2
- 3
- 4`,
local: `
list: # comment
- 1
- 2
- 3`,
expected: `
list: # updated comment
- 2
- 3
- 4`},
//
// Test Case
//
{
description: `Don't update local modified comment`,
origin: `
list: # origin comment
- 1
- 2
- 3`,
update: `
list: # updated comment
- 2
- 3
- 4`,
local: `
list: # local comment
- 1
- 2
- 3`,
expected: `
list: # local comment
- 2
- 3
- 4`},
//
// Test Case
//
{
description: `Don't add local deleted comment`,
origin: `
list: # origin comment
- 1
- 2
- 3`,
update: `
list: # updated comment
- 2
- 3
- 4`,
local: `
list:
- 1
- 2
- 3`,
expected: `
list:
- 2
- 3
- 4`},
{
description: `Add update with comment`,
origin: `
apiVersion: apps/v1
`,
update: `
list: # updated comment
- 2
- 3
- 4`,
local: `
apiVersion: apps/v1`,
expected: `
list: # updated comment
- 2
- 3
- 4`},
//
// Test Case
//
{
description: `Add keep an omitted field`,
origin: `
apiVersion: apps/v1
kind: Deployment`,
update: `
apiVersion: apps/v1
kind: StatefulSet`,
local: `
apiVersion: apps/v1
list: # not present in sources
- 2
- 3
- 4
`,
expected: `
apiVersion: apps/v1
list: # not present in sources
- 2
- 3
- 4
kind: StatefulSet
`},
//
// Test Case
//
// TODO(#36): consider making this an error
{
description: `Change an updated field`,
origin: `
apiVersion: apps/v1
list: # old value
- 1
- 2
- 3`,
update: `
apiVersion: apps/v1
list: # new value
- 2
- 3
- 4`,
local: `
apiVersion: apps/v1
list: # conflicting value
- a
- b
- c`,
expected: `
apiVersion: apps/v1
list: # conflicting value
- 2
- 3
- 4
`},
//
// Test Case
//
{
description: `Ignore a field -- set`,
origin: `
apiVersion: apps/v1
list: # ignore value
- 1
- 2
- 3
`,
update: `
apiVersion: apps/v1
list: # ignore value
- 1
- 2
- 3`,
local: `
apiVersion: apps/v1
list: # local comment
- 2
- 3
- 4
`,
expected: `
apiVersion: apps/v1
list: # local comment
- 2
- 3
- 4
`},
//
// Test Case
//
{
description: `Ignore a field -- empty`,
origin: `
apiVersion: apps/v1
list: # ignore value
- 1
- 2
- 3`,
update: `
apiVersion: apps/v1
list: # ignore value
- 1
- 2
- 3`,
local: `
apiVersion: apps/v1
`,
expected: `
apiVersion: apps/v1
`},
//
// Test Case
//
{
description: `Explicitly clear a field`,
origin: `
apiVersion: apps/v1`,
update: `
apiVersion: apps/v1
list: null # clear`,
local: `
apiVersion: apps/v1
list: # value to clear
- 1
- 2
- 3`,
expected: `
apiVersion: apps/v1`},
//
// Test Case
//
{
description: `Implicitly clear a field`,
origin: `
apiVersion: apps/v1
list: # clear value
- 1
- 2
- 3`,
update: `
apiVersion: apps/v1`,
local: `
apiVersion: apps/v1
list: # old value
- 1
- 2
- 3`,
expected: `
apiVersion: apps/v1`},
//
// Test Case
//
// TODO(#36): consider making this an error
{
description: `Implicitly clear a changed field`,
origin: `
apiVersion: apps/v1
list: # old value
- 1
- 2
- 3`,
update: `
apiVersion: apps/v1`,
local: `
apiVersion: apps/v1
list: # old value
- a
- b
- c`,
expected: `
apiVersion: apps/v1`},
}