Skip to content

Commit 5378660

Browse files
authored
Merge pull request #2039 from joelanford/fix-selectors-by-object-scheme
🐛 fix: improve semantics of combining cache selectorsByObject
2 parents ff622bd + 06a9617 commit 5378660

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pkg/cache/cache.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ func combineSelectors(inherited, options Options, scheme *runtime.Scheme) (Selec
272272
//
273273
// There is a bunch of complexity here because we need to convert to SelectorsByGVK
274274
// to be able to match keys between options and inherited and then convert back to SelectorsByObject
275-
optionsSelectorsByGVK, err := convertToByGVK(options.SelectorsByObject, options.DefaultSelector, options.Scheme)
275+
optionsSelectorsByGVK, err := convertToByGVK(options.SelectorsByObject, options.DefaultSelector, scheme)
276276
if err != nil {
277277
return nil, ObjectSelector{}, err
278278
}

pkg/cache/cache_unit_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,28 @@ var _ = Describe("cache.inheritFrom", func() {
177177
Expect(selector.Field.Matches(fields.Set{"metadata.name": "other", "metadata.namespace": "inherited"})).To(BeFalse())
178178
Expect(selector.Field.Matches(fields.Set{"metadata.name": "specified", "metadata.namespace": "inherited"})).To(BeTrue())
179179
})
180+
It("uses inherited scheme for inherited selectors", func() {
181+
inherited.Scheme = coreScheme
182+
inherited.SelectorsByObject = map[client.Object]ObjectSelector{&corev1.ConfigMap{}: {}}
183+
Expect(checkError(specified.inheritFrom(inherited)).SelectorsByObject).To(HaveLen(1))
184+
})
185+
It("does not use specified scheme for inherited selectors", func() {
186+
inherited.Scheme = runtime.NewScheme()
187+
specified.Scheme = coreScheme
188+
inherited.SelectorsByObject = map[client.Object]ObjectSelector{&corev1.ConfigMap{}: {}}
189+
_, err := specified.inheritFrom(inherited)
190+
Expect(err).To(WithTransform(runtime.IsNotRegisteredError, BeTrue()))
191+
})
192+
It("uses inherited scheme for specified selectors", func() {
193+
inherited.Scheme = coreScheme
194+
specified.SelectorsByObject = map[client.Object]ObjectSelector{&corev1.ConfigMap{}: {}}
195+
Expect(checkError(specified.inheritFrom(inherited)).SelectorsByObject).To(HaveLen(1))
196+
})
197+
It("uses specified scheme for specified selectors", func() {
198+
specified.Scheme = coreScheme
199+
specified.SelectorsByObject = map[client.Object]ObjectSelector{&corev1.ConfigMap{}: {}}
200+
Expect(checkError(specified.inheritFrom(inherited)).SelectorsByObject).To(HaveLen(1))
201+
})
180202
})
181203
Context("DefaultSelector", func() {
182204
It("is unchanged when specified and inherited are unset", func() {

0 commit comments

Comments
 (0)