@@ -88,6 +88,10 @@ func (s *State) Update(obj typed.YAMLObject, version fieldpath.APIVersion, manag
88
88
return err
89
89
}
90
90
tv , err := s .Parser .FromYAML (obj )
91
+ s .Live , err = s .Updater .Converter .Convert (s .Live , version )
92
+ if err != nil {
93
+ return err
94
+ }
91
95
managers , err := s .Updater .Update (s .Live , tv , version , s .Managers , manager )
92
96
if err != nil {
93
97
return err
@@ -108,6 +112,10 @@ func (s *State) Apply(obj typed.YAMLObject, version fieldpath.APIVersion, manage
108
112
if err != nil {
109
113
return err
110
114
}
115
+ s .Live , err = s .Updater .Converter .Convert (s .Live , version )
116
+ if err != nil {
117
+ return err
118
+ }
111
119
new , managers , err := s .Updater .Apply (s .Live , tv , version , s .Managers , manager , force )
112
120
if err != nil {
113
121
return err
@@ -135,6 +143,8 @@ func (s *State) CompareLive(obj typed.YAMLObject) (*typed.Comparison, error) {
135
143
// dummyConverter doesn't convert, it just returns the same exact object, as long as a version is provided.
136
144
type dummyConverter struct {}
137
145
146
+ var _ merge.Converter = dummyConverter {}
147
+
138
148
// Convert returns the object given in input, not doing any conversion.
139
149
func (dummyConverter ) Convert (v typed.TypedValue , version fieldpath.APIVersion ) (typed.TypedValue , error ) {
140
150
if len (version ) == 0 {
@@ -187,7 +197,7 @@ var _ Operation = &Apply{}
187
197
func (a Apply ) run (state * State ) error {
188
198
err := state .Apply (a .Object , a .APIVersion , a .Manager , false )
189
199
if err != nil {
190
- if _ , ok := err .(merge.Conflicts ); ! ok {
200
+ if _ , ok := err .(merge.Conflicts ); ! ok || a . Conflicts == nil {
191
201
return err
192
202
}
193
203
}
@@ -254,10 +264,15 @@ type TestCase struct {
254
264
Managed fieldpath.ManagedFields
255
265
}
256
266
257
- // Test runs the test-case using the given parser.
267
+ // Test runs the test-case using the given parser and a dummy converter .
258
268
func (tc TestCase ) Test (parser typed.ParseableType ) error {
269
+ return tc .TestWithConverter (parser , & dummyConverter {})
270
+ }
271
+
272
+ // TestWithConverter runs the test-case using the given parser and converter.
273
+ func (tc TestCase ) TestWithConverter (parser typed.ParseableType , converter merge.Converter ) error {
259
274
state := State {
260
- Updater : & merge.Updater {Converter : & dummyConverter {} },
275
+ Updater : & merge.Updater {Converter : converter },
261
276
Parser : parser ,
262
277
}
263
278
// We currently don't have any test that converts, we can take
0 commit comments