...
1
16
17 package merge_test
18
19 import (
20 "testing"
21
22 "sigs.k8s.io/structured-merge-diff/v4/fieldpath"
23 . "sigs.k8s.io/structured-merge-diff/v4/internal/fixture"
24 "sigs.k8s.io/structured-merge-diff/v4/typed"
25 )
26
27 var preserveUnknownParser = func() Parser {
28 parser, err := typed.NewParser(`types:
29 - name: type
30 map:
31 fields:
32 - name: num
33 type:
34 scalar: numeric
35 elementType:
36 scalar: string
37 `)
38 if err != nil {
39 panic(err)
40 }
41 return SameVersionParser{T: parser.Type("type")}
42 }()
43
44 func TestPreserveUnknownFields(t *testing.T) {
45 tests := map[string]TestCase{
46 "preserve_unknown_fields": {
47 Ops: []Operation{
48 Apply{
49 Manager: "default",
50 Object: `
51 num: 5
52 unknown: value
53 `,
54 APIVersion: "v1",
55 },
56 Apply{
57 Manager: "default",
58 Object: `
59 num: 6
60 unknown: new
61 `,
62 APIVersion: "v1",
63 },
64 },
65 Object: `
66 num: 6
67 unknown: new
68 `,
69 APIVersion: "v1",
70 Managed: fieldpath.ManagedFields{
71 "default": fieldpath.NewVersionedSet(
72 _NS(
73 _P("num"),
74 _P("unknown"),
75 ),
76 "v1",
77 false,
78 ),
79 },
80 },
81 }
82
83 for name, test := range tests {
84 t.Run(name, func(t *testing.T) {
85 if err := test.Test(preserveUnknownParser); err != nil {
86 t.Fatal(err)
87 }
88 })
89 }
90 }
91
View as plain text