Skip to content

Commit 5a99fcf

Browse files
author
jennybuckley
committed
Consider conflicts a failure, and allow conversion
1 parent d5dca23 commit 5a99fcf

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

internal/fixture/state.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ func (s *State) Update(obj typed.YAMLObject, version fieldpath.APIVersion, manag
8888
return err
8989
}
9090
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+
}
9195
managers, err := s.Updater.Update(s.Live, tv, version, s.Managers, manager)
9296
if err != nil {
9397
return err
@@ -108,6 +112,10 @@ func (s *State) Apply(obj typed.YAMLObject, version fieldpath.APIVersion, manage
108112
if err != nil {
109113
return err
110114
}
115+
s.Live , err = s.Updater.Converter.Convert(s.Live, version)
116+
if err != nil {
117+
return err
118+
}
111119
new, managers, err := s.Updater.Apply(s.Live, tv, version, s.Managers, manager, force)
112120
if err != nil {
113121
return err
@@ -135,6 +143,8 @@ func (s *State) CompareLive(obj typed.YAMLObject) (*typed.Comparison, error) {
135143
// dummyConverter doesn't convert, it just returns the same exact object, as long as a version is provided.
136144
type dummyConverter struct{}
137145

146+
var _ merge.Converter = dummyConverter{}
147+
138148
// Convert returns the object given in input, not doing any conversion.
139149
func (dummyConverter) Convert(v typed.TypedValue, version fieldpath.APIVersion) (typed.TypedValue, error) {
140150
if len(version) == 0 {
@@ -187,7 +197,7 @@ var _ Operation = &Apply{}
187197
func (a Apply) run(state *State) error {
188198
err := state.Apply(a.Object, a.APIVersion, a.Manager, false)
189199
if err != nil {
190-
if _, ok := err.(merge.Conflicts); !ok {
200+
if _, ok := err.(merge.Conflicts); !ok || a.Conflicts == nil {
191201
return err
192202
}
193203
}
@@ -254,10 +264,15 @@ type TestCase struct {
254264
Managed fieldpath.ManagedFields
255265
}
256266

257-
// Test runs the test-case using the given parser.
267+
// Test runs the test-case using the given parser and a dummy converter.
258268
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 {
259274
state := State{
260-
Updater: &merge.Updater{Converter: &dummyConverter{}},
275+
Updater: &merge.Updater{Converter: converter},
261276
Parser: parser,
262277
}
263278
// We currently don't have any test that converts, we can take

0 commit comments

Comments
 (0)