Increase sort determinism.

This commit is contained in:
Jeffrey Regan
2018-09-27 10:45:54 -07:00
parent acf989f1be
commit 317833aeff
7 changed files with 106 additions and 47 deletions

View File

@@ -58,16 +58,35 @@ func NewResIdKindOnly(k string, n string) ResId {
return ResId{gvKind: gvk.FromKind(k), name: n}
}
const (
noNamespace = "noNamespace"
noPrefix = "noPrefix"
noName = "noName"
separator = "|"
)
// String of ResId based on GVK, name and prefix
func (n ResId) String() string {
fields := []string{n.gvKind.Group, n.gvKind.Version, n.gvKind.Kind,
n.namespace, n.prefix, n.name}
return strings.Join(fields, "_") + ".yaml"
ns := n.namespace
if ns == "" {
ns = noNamespace
}
p := n.prefix
if p == "" {
p = noPrefix
}
nm := n.name
if nm == "" {
nm = noName
}
return strings.Join(
[]string{n.gvKind.String(), ns, p, nm}, separator)
}
// GvknString of ResId based on GVK and name
func (n ResId) GvknString() string {
return n.gvKind.String() + "_" + n.name + ".yaml"
return n.gvKind.String() + separator + n.name
}
// GvknEquals return if two ResId have the same Group/Version/Kind and name

View File

@@ -11,19 +11,27 @@ var stringTests = []struct {
s string
}{
{ResId{gvKind: gvk.Gvk{Group: "g", Version: "v", Kind: "k"},
name: "nm", prefix: "p", namespace: "ns"}, "g_v_k_ns_p_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"g_v_k|ns|p|nm"},
{ResId{gvKind: gvk.Gvk{Version: "v", Kind: "k"},
name: "nm", prefix: "p", namespace: "ns"}, "_v_k_ns_p_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"noGroup_v_k|ns|p|nm"},
{ResId{gvKind: gvk.Gvk{Kind: "k"},
name: "nm", prefix: "p", namespace: "ns"}, "__k_ns_p_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"noGroup_noVersion_k|ns|p|nm"},
{ResId{gvKind: gvk.Gvk{},
name: "nm", prefix: "p", namespace: "ns"}, "___ns_p_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"noGroup_noVersion_noKind|ns|p|nm"},
{ResId{gvKind: gvk.Gvk{},
name: "nm", prefix: "p"}, "____p_nm.yaml"},
name: "nm", prefix: "p"},
"noGroup_noVersion_noKind|noNamespace|p|nm"},
{ResId{gvKind: gvk.Gvk{},
name: "nm"}, "_____nm.yaml"},
{ResId{gvKind: gvk.Gvk{}}, "_____.yaml"},
{ResId{}, "_____.yaml"},
name: "nm"},
"noGroup_noVersion_noKind|noNamespace|noPrefix|nm"},
{ResId{gvKind: gvk.Gvk{}},
"noGroup_noVersion_noKind|noNamespace|noPrefix|noName"},
{ResId{},
"noGroup_noVersion_noKind|noNamespace|noPrefix|noName"},
}
func TestString(t *testing.T) {
@@ -39,19 +47,27 @@ var gvknStringTests = []struct {
s string
}{
{ResId{gvKind: gvk.Gvk{Group: "g", Version: "v", Kind: "k"},
name: "nm", prefix: "p", namespace: "ns"}, "g_v_k_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"g_v_k|nm"},
{ResId{gvKind: gvk.Gvk{Version: "v", Kind: "k"},
name: "nm", prefix: "p", namespace: "ns"}, "v_k_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"noGroup_v_k|nm"},
{ResId{gvKind: gvk.Gvk{Kind: "k"},
name: "nm", prefix: "p", namespace: "ns"}, "_k_nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"noGroup_noVersion_k|nm"},
{ResId{gvKind: gvk.Gvk{},
name: "nm", prefix: "p", namespace: "ns"}, "__nm.yaml"},
name: "nm", prefix: "p", namespace: "ns"},
"noGroup_noVersion_noKind|nm"},
{ResId{gvKind: gvk.Gvk{},
name: "nm", prefix: "p"}, "__nm.yaml"},
name: "nm", prefix: "p"},
"noGroup_noVersion_noKind|nm"},
{ResId{gvKind: gvk.Gvk{},
name: "nm"}, "__nm.yaml"},
{ResId{gvKind: gvk.Gvk{}}, "__.yaml"},
{ResId{}, "__.yaml"},
name: "nm"},
"noGroup_noVersion_noKind|nm"},
{ResId{gvKind: gvk.Gvk{}},
"noGroup_noVersion_noKind|"},
{ResId{},
"noGroup_noVersion_noKind|"},
}
func TestGvknString(t *testing.T) {