Merge "Use Label (string) instead of Label (struct) to dedupe" into main
This commit is contained in:
@@ -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
|
// UniqueSortedBazelLabels takes a []Label and deduplicates the labels, and returns
|
||||||
// the slice in a sorted order.
|
// the slice in a sorted order.
|
||||||
func UniqueSortedBazelLabels(originalLabels []Label) []Label {
|
func UniqueSortedBazelLabels(originalLabels []Label) []Label {
|
||||||
uniqueLabelsSet := make(map[Label]bool)
|
uniqueLabels := FirstUniqueBazelLabels(originalLabels)
|
||||||
for _, l := range originalLabels {
|
|
||||||
uniqueLabelsSet[l] = true
|
|
||||||
}
|
|
||||||
var uniqueLabels []Label
|
|
||||||
for l, _ := range uniqueLabelsSet {
|
|
||||||
uniqueLabels = append(uniqueLabels, l)
|
|
||||||
}
|
|
||||||
sort.SliceStable(uniqueLabels, func(i, j int) bool {
|
sort.SliceStable(uniqueLabels, func(i, j int) bool {
|
||||||
return uniqueLabels[i].Label < uniqueLabels[j].Label
|
return uniqueLabels[i].Label < uniqueLabels[j].Label
|
||||||
})
|
})
|
||||||
@@ -210,13 +203,13 @@ func UniqueSortedBazelLabels(originalLabels []Label) []Label {
|
|||||||
|
|
||||||
func FirstUniqueBazelLabels(originalLabels []Label) []Label {
|
func FirstUniqueBazelLabels(originalLabels []Label) []Label {
|
||||||
var labels []Label
|
var labels []Label
|
||||||
found := make(map[Label]bool, len(originalLabels))
|
found := make(map[string]bool, len(originalLabels))
|
||||||
for _, l := range originalLabels {
|
for _, l := range originalLabels {
|
||||||
if _, ok := found[l]; ok {
|
if _, ok := found[l.Label]; ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
labels = append(labels, l)
|
labels = append(labels, l)
|
||||||
found[l] = true
|
found[l.Label] = true
|
||||||
}
|
}
|
||||||
return labels
|
return labels
|
||||||
}
|
}
|
||||||
|
@@ -33,8 +33,12 @@ func TestUniqueBazelLabels(t *testing.T) {
|
|||||||
{Label: "b"},
|
{Label: "b"},
|
||||||
{Label: "a"},
|
{Label: "a"},
|
||||||
{Label: "c"},
|
{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{
|
expectedUniqueLabels: []Label{
|
||||||
|
{Label: "//foo:bar", OriginalModuleName: "bar"},
|
||||||
{Label: "a"},
|
{Label: "a"},
|
||||||
{Label: "b"},
|
{Label: "b"},
|
||||||
{Label: "c"},
|
{Label: "c"},
|
||||||
@@ -194,6 +198,9 @@ func TestFirstUniqueBazelLabelList(t *testing.T) {
|
|||||||
{Label: "b"},
|
{Label: "b"},
|
||||||
{Label: "a"},
|
{Label: "a"},
|
||||||
{Label: "c"},
|
{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{
|
Excludes: []Label{
|
||||||
{Label: "x"},
|
{Label: "x"},
|
||||||
@@ -207,6 +214,7 @@ func TestFirstUniqueBazelLabelList(t *testing.T) {
|
|||||||
{Label: "a"},
|
{Label: "a"},
|
||||||
{Label: "b"},
|
{Label: "b"},
|
||||||
{Label: "c"},
|
{Label: "c"},
|
||||||
|
{Label: "//foo:bar", OriginalModuleName: "bar"},
|
||||||
},
|
},
|
||||||
Excludes: []Label{
|
Excludes: []Label{
|
||||||
{Label: "x"},
|
{Label: "x"},
|
||||||
|
Reference in New Issue
Block a user