mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
297 lines
5.9 KiB
Go
297 lines
5.9 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package merge3_test
|
|
|
|
var scalarTestCases = []testCase{
|
|
// Scalar Field Test Cases
|
|
//
|
|
// Test Case
|
|
//
|
|
{
|
|
description: `Set and updated a field`,
|
|
origin: `kind: Deployment`,
|
|
update: `kind: StatefulSet`,
|
|
local: `kind: Deployment`,
|
|
expected: `kind: StatefulSet`},
|
|
|
|
{
|
|
description: `Add an updated field`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # old value`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet # new value`,
|
|
local: `
|
|
apiVersion: apps/v1`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet # new value`},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{
|
|
description: `Ensure comments are added`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'dest'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'updated'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas"}`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'original'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'updated'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas"}
|
|
`},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{
|
|
description: `Ensure comments are updated`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'dest'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas"}`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'updated'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas_new"}`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'original'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas"}
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'updated'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas_new"}
|
|
`},
|
|
|
|
{
|
|
description: `Ensure deleted comments are not updated`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'dest'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas"}`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'updated'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 3 # {"$openapi":"replicas"}`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'original'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 4
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
annotations:
|
|
config.kubernetes.io/index: '0'
|
|
config.kubernetes.io/merge-source: 'updated'
|
|
config.kubernetes.io/path: 'temp.yaml'
|
|
spec:
|
|
replicas: 4
|
|
`},
|
|
|
|
{
|
|
description: `Add keep an omitted field`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
spec: foo # field not present in source
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
spec: foo # field not present in source
|
|
kind: StatefulSet
|
|
`},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
// TODO(#36): consider making this an error
|
|
{
|
|
description: `Change an updated field`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # old value`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet # new value`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: Service # conflicting value`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet # new value`},
|
|
|
|
{
|
|
description: `Ignore a field`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # ignore this field`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # ignore this field`,
|
|
local: `
|
|
apiVersion: apps/v1`,
|
|
expected: `
|
|
apiVersion: apps/v1`},
|
|
|
|
{
|
|
description: `Explicitly clear a field`,
|
|
origin: `
|
|
apiVersion: apps/v1`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: null # clear this value`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # value to be cleared`,
|
|
expected: `
|
|
apiVersion: apps/v1`},
|
|
|
|
{description: `Implicitly clear a field`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # clear this field`,
|
|
update: `
|
|
apiVersion: apps/v1`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment # clear this field`,
|
|
expected: `
|
|
apiVersion: apps/v1`},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
// TODO(#36): consider making this an error
|
|
{
|
|
description: `Implicitly clear a changed field`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
kind: Deployment`,
|
|
update: `
|
|
apiVersion: apps/v1`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet`,
|
|
expected: `
|
|
apiVersion: apps/v1`},
|
|
|
|
//
|
|
// Test Case
|
|
//
|
|
{
|
|
description: `Merge an empty scalar value`,
|
|
origin: `
|
|
apiVersion: apps/v1
|
|
`,
|
|
update: `
|
|
apiVersion: apps/v1
|
|
kind: {}
|
|
`,
|
|
local: `
|
|
apiVersion: apps/v1
|
|
`,
|
|
expected: `
|
|
apiVersion: apps/v1
|
|
kind: {}
|
|
`},
|
|
}
|