From ef552569f9dcf817596179dac5e0bffc9b245b99 Mon Sep 17 00:00:00 2001 From: "Julian V. Modesto" Date: Thu, 7 May 2020 15:50:28 -0400 Subject: [PATCH] Add Conflicts.ToSet() --- merge/conflict.go | 9 +++++++++ merge/conflict_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/merge/conflict.go b/merge/conflict.go index 2dbd274e..88cb1417 100644 --- a/merge/conflict.go +++ b/merge/conflict.go @@ -95,6 +95,15 @@ func (c Conflicts) Equals(c2 Conflicts) bool { return true } +// ToSet aggregates conflicts for all managers into a single Set. +func (c Conflicts) ToSet() *fieldpath.Set { + set := fieldpath.NewSet() + for _, conflict := range []Conflict(c) { + set.Insert(conflict.Path) + } + return set +} + // ConflictsFromManagers creates a list of conflicts given Managers sets. func ConflictsFromManagers(sets fieldpath.ManagedFields) Conflicts { conflicts := []Conflict{} diff --git a/merge/conflict_test.go b/merge/conflict_test.go index b26d138e..f742b5b4 100644 --- a/merge/conflict_test.go +++ b/merge/conflict_test.go @@ -61,3 +61,34 @@ conflicts with "Bob": t.Errorf("Got %v, wanted %v", got.Error(), wanted) } } + +func TestToSet(t *testing.T) { + conflicts := merge.ConflictsFromManagers(fieldpath.ManagedFields{ + "Bob": fieldpath.NewVersionedSet( + _NS( + _P("key"), + _P("list", _KBF("key", "a", "id", 2), "id"), + ), + "v1", + false, + ), + "Alice": fieldpath.NewVersionedSet( + _NS( + _P("value"), + _P("list", _KBF("key", "a", "id", 2), "key"), + ), + "v1", + false, + ), + }) + expected := fieldpath.NewSet( + _P("key"), + _P("value"), + _P("list", _KBF("key", "a", "id", 2), "id"), + _P("list", _KBF("key", "a", "id", 2), "key"), + ) + actual := conflicts.ToSet() + if !expected.Equals(actual) { + t.Fatalf("expected\n%v\n, but got\n%v\n", expected, actual) + } +}