66
77	corev1 "k8s.io/api/core/v1" 
88	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 
9+ 	"k8s.io/apimachinery/pkg/labels" 
910	"k8s.io/utils/ptr" 
1011	"sigs.k8s.io/controller-runtime/pkg/client" 
1112	"sigs.k8s.io/controller-runtime/pkg/event" 
@@ -114,8 +115,24 @@ var _ = Describe("Predicates", func() {
114115		It ("should detect changes to the labels" , func () {
115116			pHasFoo  :=  ctrlutils .HasLabelPredicate ("foo" , "" )
116117			pHasBar  :=  ctrlutils .HasLabelPredicate ("bar" , "" )
118+ 			matchesEverything  :=  ctrlutils .LabelSelectorPredicate (labels .Everything ())
119+ 			matchesNothing  :=  ctrlutils .LabelSelectorPredicate (labels .Nothing ())
117120			pHasFooWithFoo  :=  ctrlutils .HasLabelPredicate ("foo" , "foo" )
118121			pHasFooWithBar  :=  ctrlutils .HasLabelPredicate ("foo" , "bar" )
122+ 			fooWithFooSelector , err  :=  metav1 .LabelSelectorAsSelector (& metav1.LabelSelector {
123+ 				MatchLabels : map [string ]string {
124+ 					"foo" : "foo" ,
125+ 				},
126+ 			})
127+ 			Expect (err ).ToNot (HaveOccurred ())
128+ 			fooWithBarSelector , err  :=  metav1 .LabelSelectorAsSelector (& metav1.LabelSelector {
129+ 				MatchLabels : map [string ]string {
130+ 					"foo" : "bar" ,
131+ 				},
132+ 			})
133+ 			Expect (err ).ToNot (HaveOccurred ())
134+ 			pHasFooWithFooViaSelector  :=  ctrlutils .LabelSelectorPredicate (fooWithFooSelector )
135+ 			pHasFooWithBarViaSelector  :=  ctrlutils .LabelSelectorPredicate (fooWithBarSelector )
119136			pGotFoo  :=  ctrlutils .GotLabelPredicate ("foo" , "" )
120137			pGotFooWithFoo  :=  ctrlutils .GotLabelPredicate ("foo" , "foo" )
121138			pGotFooWithBar  :=  ctrlutils .GotLabelPredicate ("foo" , "bar" )
@@ -124,9 +141,13 @@ var _ = Describe("Predicates", func() {
124141			pLostFooWithBar  :=  ctrlutils .LostLabelPredicate ("foo" , "bar" )
125142			By ("old and new resource are equal" )
126143			e  :=  updateEvent (base , changed )
144+ 			Expect (matchesEverything .Update (e )).To (BeTrue (), "'everything' LabelSelector should always match" )
145+ 			Expect (matchesNothing .Update (e )).To (BeFalse (), "'nothing' LabelSelector should never match" )
127146			Expect (pHasFoo .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if there are no labels" )
128147			Expect (pHasFooWithFoo .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if there are no labels" )
148+ 			Expect (pHasFooWithFooViaSelector .Update (e )).To (BeFalse (), "LabelSelectorPredicate should return false if the labels are not matched" )
129149			Expect (pHasFooWithBar .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if there are no labels" )
150+ 			Expect (pHasFooWithBarViaSelector .Update (e )).To (BeFalse (), "LabelSelectorPredicate should return falseif the labels are not matched" )
130151			Expect (pGotFoo .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if there are no labels" )
131152			Expect (pGotFooWithFoo .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if there are no labels" )
132153			Expect (pGotFooWithBar .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if there are no labels" )
@@ -138,10 +159,14 @@ var _ = Describe("Predicates", func() {
138159				"foo" : "foo" ,
139160			})
140161			e  =  updateEvent (base , changed )
162+ 			Expect (matchesEverything .Update (e )).To (BeTrue (), "'everything' LabelSelector should always match" )
163+ 			Expect (matchesNothing .Update (e )).To (BeFalse (), "'nothing' LabelSelector should never match" )
141164			Expect (pHasFoo .Update (e )).To (BeTrue (), "HasLabelPredicate should return true if the label is there" )
142165			Expect (pHasBar .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if the label is not there" )
143166			Expect (pHasFooWithFoo .Update (e )).To (BeTrue (), "HasLabelPredicate should return true if the label is there and has the fitting value" )
167+ 			Expect (pHasFooWithFooViaSelector .Update (e )).To (BeTrue (), "LabelSelectorPredicate should return true if the labels are matched" )
144168			Expect (pHasFooWithBar .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if the label is there but has the wrong value" )
169+ 			Expect (pHasFooWithBarViaSelector .Update (e )).To (BeFalse (), "LabelSelectorPredicate should return false if the labels are not matched" )
145170			Expect (pGotFoo .Update (e )).To (BeTrue (), "GotLabelPredicate should return true if the label was added" )
146171			Expect (pGotFooWithFoo .Update (e )).To (BeTrue (), "GotLabelPredicate should return true if the label was added with the correct value" )
147172			Expect (pGotFooWithBar .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if the label was added but with the wrong value" )
@@ -154,10 +179,14 @@ var _ = Describe("Predicates", func() {
154179				"foo" : "bar" ,
155180			})
156181			e  =  updateEvent (base , changed )
182+ 			Expect (matchesEverything .Update (e )).To (BeTrue (), "'everything' LabelSelector should always match" )
183+ 			Expect (matchesNothing .Update (e )).To (BeFalse (), "'nothing' LabelSelector should never match" )
157184			Expect (pHasFoo .Update (e )).To (BeTrue (), "HasLabelPredicate should return true if the label is there" )
158185			Expect (pHasBar .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if the label is not there" )
159186			Expect (pHasFooWithFoo .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if the label is there but has the wrong value" )
187+ 			Expect (pHasFooWithFooViaSelector .Update (e )).To (BeFalse (), "LabelSelectorPredicate should return false if the labels are not matched" )
160188			Expect (pHasFooWithBar .Update (e )).To (BeTrue (), "HasLabelPredicate should return true if the label is there and has the fitting value" )
189+ 			Expect (pHasFooWithBarViaSelector .Update (e )).To (BeTrue (), "LabelSelectorPredicate should return true if the labels are matched" )
161190			Expect (pGotFoo .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if the label was there before" )
162191			Expect (pGotFooWithFoo .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if the label was changed but to the wrong value" )
163192			Expect (pGotFooWithBar .Update (e )).To (BeTrue (), "GotLabelPredicate should return true if the label was changed to the correct value" )
@@ -168,9 +197,13 @@ var _ = Describe("Predicates", func() {
168197			base  =  changed .DeepCopy ()
169198			changed .SetLabels (nil )
170199			e  =  updateEvent (base , changed )
200+ 			Expect (matchesEverything .Update (e )).To (BeTrue (), "'everything' LabelSelector should always match" )
201+ 			Expect (matchesNothing .Update (e )).To (BeFalse (), "'nothing' LabelSelector should never match" )
171202			Expect (pHasFoo .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if there are no labels" )
172203			Expect (pHasFooWithFoo .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if there are no labels" )
204+ 			Expect (pHasFooWithFooViaSelector .Update (e )).To (BeFalse (), "LabelSelectorPredicate should return false if the labels are not matched" )
173205			Expect (pHasFooWithBar .Update (e )).To (BeFalse (), "HasLabelPredicate should return false if there are no labels" )
206+ 			Expect (pHasFooWithBarViaSelector .Update (e )).To (BeFalse (), "LabelSelectorPredicate should return false if the labels are not matched" )
174207			Expect (pGotFoo .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if there are no labels" )
175208			Expect (pGotFooWithFoo .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if there are no labels" )
176209			Expect (pGotFooWithBar .Update (e )).To (BeFalse (), "GotLabelPredicate should return false if there are no labels" )
0 commit comments