diff --git a/pkg/cache/cache.go b/pkg/cache/cache.go index 3388b2915b..c4398777e1 100644 --- a/pkg/cache/cache.go +++ b/pkg/cache/cache.go @@ -481,6 +481,7 @@ func convertToByObject(in map[schema.GroupVersionKind]internal.InformersOptsByGV if !ok { return nil, fmt.Errorf("object %T for GVK %q does not implement client.Object", obj, gvk) } + cObj.GetObjectKind().SetGroupVersionKind(gvk) out[cObj] = ByObject{ Field: opts.Selector.Field, Label: opts.Selector.Label, diff --git a/pkg/cache/cache_unit_test.go b/pkg/cache/cache_unit_test.go index 8e2e56e718..1be46e7f79 100644 --- a/pkg/cache/cache_unit_test.go +++ b/pkg/cache/cache_unit_test.go @@ -126,6 +126,23 @@ var _ = Describe("cache.inheritFrom", func() { Expect(checkError(specified.inheritFrom(inherited)).Namespaces).To(Equal(specified.Namespaces)) }) }) + Context("ByObject", func() { + It("maintains GVKs of unstructured ByObject keys", func() { + gvk := gv.WithKind("Unstructured") + obj := &unstructured.Unstructured{} + obj.SetGroupVersionKind(gvk) + specified.Scheme = coreScheme + specified.Scheme.AddKnownTypeWithName(gvk, obj) + specified.ByObject = map[client.Object]ByObject{ + obj: {}, + } + byObject := checkError(specified.inheritFrom(inherited)).ByObject + Expect(byObject).To(HaveLen(1)) + for obj := range byObject { + Expect(obj.GetObjectKind().GroupVersionKind()).To(Equal(gvk)) + } + }) + }) Context("SelectorsByObject", func() { It("is unchanged when specified and inherited are unset", func() { Expect(checkError(specified.inheritFrom(inherited)).ByObject).To(HaveLen(0))