Update kind subsort to sort unknown kinds alphabetically.

Remove length check from subsort test. Add check for unknowns.
pull/2816/head
Justin Scott 7 years ago
parent 87d2b7ab67
commit f239050996

@ -114,18 +114,19 @@ func (k *kindSorter) Swap(i, j int) { k.manifests[i], k.manifests[j] = k.manifes
func (k *kindSorter) Less(i, j int) bool {
a := k.manifests[i]
b := k.manifests[j]
first, ok := k.ordering[a.head.Kind]
if !ok {
// Unknown is always last
first, aok := k.ordering[a.head.Kind]
second, bok := k.ordering[b.head.Kind]
if first == second {
// same kind (including unknown) so sub sort alphanumeric
return a.name < b.name
}
// unknown kind is last
if !aok {
return false
}
second, ok := k.ordering[b.head.Kind]
if !ok {
if !bok {
return true
}
if first == second {
// same kind so sub sort alphanumeric
return a.name < b.name
}
// sort different kinds
return first < second
}

@ -175,19 +175,29 @@ func TestKindSorterSubSort(t *testing.T) {
name: "!",
head: &util.SimpleHead{Kind: "ClusterRoleBinding"},
},
{
name: "u3",
head: &util.SimpleHead{Kind: "Unknown"},
},
{
name: "u1",
head: &util.SimpleHead{Kind: "Unknown"},
},
{
name: "u2",
head: &util.SimpleHead{Kind: "Unknown"},
},
}
for _, test := range []struct {
description string
order SortOrder
expected string
}{
{"cm,clusterRole,clusterRoleBinding", InstallOrder, "01Aa!z"},
// expectation is sorted by kind (unknown is last) and then sub sorted alphabetically within each group
{"cm,clusterRole,clusterRoleBinding,Unknown", InstallOrder, "01Aa!zu1u2u3"},
} {
var buf bytes.Buffer
t.Run(test.description, func(t *testing.T) {
if got, want := len(test.expected), len(manifests); got != want {
t.Fatalf("Expected %d names in order, got %d", want, got)
}
defer buf.Reset()
for _, r := range sortByKind(manifests, test.order) {
buf.WriteString(r.name)

Loading…
Cancel
Save