Use resid.ResId in replacements.

This commit is contained in:
monopole
2021-04-22 20:41:18 -07:00
parent d5d44ce3fe
commit c828b1e49a
10 changed files with 195 additions and 84 deletions

View File

@@ -90,6 +90,13 @@ func (id ResId) GvknEquals(o ResId) bool {
return id.Name == o.Name && id.Gvk.Equals(o.Gvk)
}
// IsSelectedBy returns true if self is selected by the argument.
func (id ResId) IsSelectedBy(selector ResId) bool {
return (selector.Name == "" || selector.Name == id.Name) &&
(selector.Namespace == "" || selector.IsNsEquals(id)) &&
id.Gvk.IsSelected(&selector.Gvk)
}
// Equals returns true if the other id matches
// namespace/Group/Version/Kind/name.
func (id ResId) Equals(o ResId) bool {

View File

@@ -360,6 +360,100 @@ var ids = []ResId{
},
}
func TestResIdIsSelected(t *testing.T) {
type selectable struct {
id ResId
expectSelected bool
}
var testCases = []struct {
selector ResId
selectables []selectable
}{
{
selector: ResId{
Namespace: "X",
Name: "nm",
Gvk: Gvk{Group: "g", Version: "v", Kind: "k"},
},
selectables: []selectable{
{
id: ResId{
Namespace: "X",
Name: "nm",
Gvk: Gvk{Group: "g", Version: "v", Kind: "k"},
},
expectSelected: true,
},
{
id: ResId{
Namespace: "x",
Name: "nm",
Gvk: Gvk{Group: "g", Version: "v", Kind: "k"},
},
expectSelected: false,
},
{
id: ResId{
Name: "nm",
Gvk: Gvk{Group: "g", Version: "v", Kind: "k"},
},
expectSelected: false,
},
},
},
{
selector: ResId{
/* Namespace wildcard */
Name: "nm",
Gvk: Gvk{Group: "g" /* Version wildcard */, Kind: "k"},
},
selectables: []selectable{
{
id: ResId{
Namespace: "X",
Name: "nm",
Gvk: Gvk{Group: "g", Version: "v", Kind: "k"},
},
expectSelected: true,
},
{
id: ResId{
Namespace: "x",
Name: "nm",
Gvk: Gvk{Group: "g", Version: "v", Kind: "k"},
},
expectSelected: true,
},
{
id: ResId{
Name: "nm",
Gvk: Gvk{Group: "g", Version: "VVV", Kind: "k"},
},
expectSelected: true,
},
},
},
}
for _, tst := range testCases {
for _, pair := range tst.selectables {
if pair.id.IsSelectedBy(tst.selector) {
if !pair.expectSelected {
t.Fatalf(
"expected id %s to NOT be selected by %s",
pair.id, tst.selector)
}
} else {
if pair.expectSelected {
t.Fatalf(
"expected id %s to be selected by %s",
pair.id, tst.selector)
}
}
}
}
}
func TestFromString(t *testing.T) {
for _, id := range ids {
newId := FromString(id.String())