Merge "Use Label (string) instead of Label (struct) to dedupe" into main

This commit is contained in:
Treehugger Robot
2023-08-17 00:17:54 +00:00
committed by Gerrit Code Review
2 changed files with 12 additions and 11 deletions

View File

@@ -194,14 +194,7 @@ func (ll *LabelList) Partition(predicate func(label Label) bool) (LabelList, Lab
// UniqueSortedBazelLabels takes a []Label and deduplicates the labels, and returns
// the slice in a sorted order.
func UniqueSortedBazelLabels(originalLabels []Label) []Label {
uniqueLabelsSet := make(map[Label]bool)
for _, l := range originalLabels {
uniqueLabelsSet[l] = true
}
var uniqueLabels []Label
for l, _ := range uniqueLabelsSet {
uniqueLabels = append(uniqueLabels, l)
}
uniqueLabels := FirstUniqueBazelLabels(originalLabels)
sort.SliceStable(uniqueLabels, func(i, j int) bool {
return uniqueLabels[i].Label < uniqueLabels[j].Label
})
@@ -210,13 +203,13 @@ func UniqueSortedBazelLabels(originalLabels []Label) []Label {
func FirstUniqueBazelLabels(originalLabels []Label) []Label {
var labels []Label
found := make(map[Label]bool, len(originalLabels))
found := make(map[string]bool, len(originalLabels))
for _, l := range originalLabels {
if _, ok := found[l]; ok {
if _, ok := found[l.Label]; ok {
continue
}
labels = append(labels, l)
found[l] = true
found[l.Label] = true
}
return labels
}

View File

@@ -33,8 +33,12 @@ func TestUniqueBazelLabels(t *testing.T) {
{Label: "b"},
{Label: "a"},
{Label: "c"},
// namespaces
{Label: "//foo:bar", OriginalModuleName: "bar"}, // when referenced from foo namespace
{Label: "//foo:bar", OriginalModuleName: "//foo:bar"}, // when reference from root namespace
},
expectedUniqueLabels: []Label{
{Label: "//foo:bar", OriginalModuleName: "bar"},
{Label: "a"},
{Label: "b"},
{Label: "c"},
@@ -194,6 +198,9 @@ func TestFirstUniqueBazelLabelList(t *testing.T) {
{Label: "b"},
{Label: "a"},
{Label: "c"},
// namespaces
{Label: "//foo:bar", OriginalModuleName: "bar"}, // when referenced from foo namespace
{Label: "//foo:bar", OriginalModuleName: "//foo:bar"}, // when referenced from root namespace
},
Excludes: []Label{
{Label: "x"},
@@ -207,6 +214,7 @@ func TestFirstUniqueBazelLabelList(t *testing.T) {
{Label: "a"},
{Label: "b"},
{Label: "c"},
{Label: "//foo:bar", OriginalModuleName: "bar"},
},
Excludes: []Label{
{Label: "x"},