@@ -21,6 +21,7 @@ import (
2121 . "github.com/onsi/gomega"
2222 corev1 "k8s.io/api/core/v1"
2323 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24+ "sigs.k8s.io/controller-runtime/pkg/runtime/inject"
2425
2526 "sigs.k8s.io/controller-runtime/pkg/client"
2627 "sigs.k8s.io/controller-runtime/pkg/event"
@@ -827,6 +828,13 @@ var _ = Describe("Predicate", func() {
827828 }
828829 passFuncs := funcs (true )
829830 failFuncs := funcs (false )
831+
832+ var injectFunc inject.Func
833+ injectFunc = func (i interface {}) error {
834+ _ , err := inject .InjectorInto (injectFunc , i )
835+ return err
836+ }
837+
830838 Describe ("When checking an And predicate" , func () {
831839 It ("should return false when one of its predicates returns false" , func () {
832840 a := predicate .And (passFuncs , failFuncs )
@@ -842,6 +850,12 @@ var _ = Describe("Predicate", func() {
842850 Expect (a .Delete (event.DeleteEvent {})).To (BeTrue ())
843851 Expect (a .Generic (event.GenericEvent {})).To (BeTrue ())
844852 })
853+ It ("should inject into its predicates" , func () {
854+ prct := & injectablePredicate {}
855+ a := predicate .And (prct )
856+ Expect (injectFunc (a )).To (Succeed ())
857+ Expect (prct .injected ).To (BeTrue ())
858+ })
845859 })
846860 Describe ("When checking an Or predicate" , func () {
847861 It ("should return true when one of its predicates returns true" , func () {
@@ -858,6 +872,12 @@ var _ = Describe("Predicate", func() {
858872 Expect (o .Delete (event.DeleteEvent {})).To (BeFalse ())
859873 Expect (o .Generic (event.GenericEvent {})).To (BeFalse ())
860874 })
875+ It ("should inject into its predicates" , func () {
876+ prct := & injectablePredicate {}
877+ a := predicate .Or (prct )
878+ Expect (injectFunc (a )).To (Succeed ())
879+ Expect (prct .injected ).To (BeTrue ())
880+ })
861881 })
862882 })
863883
@@ -942,3 +962,13 @@ var _ = Describe("Predicate", func() {
942962 })
943963 })
944964})
965+
966+ type injectablePredicate struct {
967+ injected bool
968+ predicate.Funcs
969+ }
970+
971+ func (i * injectablePredicate ) InjectFunc (f inject.Func ) error {
972+ i .injected = true
973+ return nil
974+ }
0 commit comments