// Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 package merge3_test var mapTestCases = []testCase{ // // Test Case // { description: `Add the annotations map field`, origin: ` kind: Deployment`, update: ` kind: Deployment metadata: annotations: d: e # add these annotations `, local: ` kind: Deployment`, expected: ` kind: Deployment metadata: annotations: d: e # add these annotations`}, // // Test Case // { description: `Add an annotation to the field`, origin: ` kind: Deployment metadata: annotations: a: b`, update: ` kind: Deployment metadata: annotations: a: b d: e # add these annotations`, local: ` kind: Deployment metadata: annotations: g: h # keep these annotations`, expected: ` kind: Deployment metadata: annotations: g: h # keep these annotations d: e # add these annotations`}, // // Test Case // { description: `Add an annotation to the field, field missing from dest`, origin: ` kind: Deployment metadata: annotations: a: b # ignored because unchanged`, update: ` kind: Deployment metadata: annotations: a: b # ignored because unchanged d: e`, local: ` kind: Deployment`, expected: ` kind: Deployment metadata: annotations: d: e`}, // // Test Case // { description: `Update an annotation on the field, field messing rom the dest`, origin: ` kind: Deployment metadata: annotations: a: b d: c`, update: ` kind: Deployment metadata: annotations: a: b d: e # set these annotations`, local: ` kind: Deployment metadata: annotations: g: h # keep these annotations`, expected: ` kind: Deployment metadata: annotations: g: h # keep these annotations d: e # set these annotations`}, // // Test Case // { description: `Add an annotation to the field, field missing from dest`, origin: ` kind: Deployment metadata: annotations: a: b # ignored because unchanged`, update: ` kind: Deployment metadata: annotations: a: b # ignored because unchanged d: e`, local: ` kind: Deployment`, expected: ` kind: Deployment metadata: annotations: d: e`}, // // Test Case // { description: `Remove an annotation`, origin: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: a: b`, update: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: {}`, local: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: c: d a: b`, expected: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: c: d`}, // // Test Case // // TODO(#36) support ~annotations~: {} deletion { description: `Specify a field as empty that isn't present in the source`, origin: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo`, update: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: null`, local: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: a: b`, expected: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo`}, // // Test Case // { description: `Remove an annotation`, origin: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: a: b`, update: ` apiVersion: apps/v1 kind: Deployment`, local: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: c: d a: b`, expected: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: c: d`}, // // Test Case // { description: `Remove annotations field`, origin: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: a: b`, update: ` apiVersion: apps/v1 kind: Deployment`, local: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo`, expected: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo `}, // // Test Case // { description: `Remove annotations field, but keep in dest`, origin: ` apiVersion: apps/v1 kind: Deployment metadata: annotations: a: b`, update: ` apiVersion: apps/v1 kind: Deployment`, local: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: foo: bar # keep this annotation even though the parent field was removed`, expected: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: foo: bar # keep this annotation even though the parent field was removed`}, // // Test Case // { description: `Remove annotations, but they are already empty`, origin: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: a: b `, update: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo `, local: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: {} `, expected: ` apiVersion: apps/v1 kind: Deployment metadata: name: foo annotations: {} `}, }