55 "testing"
66 "time"
77
8+ "github.com/stretchr/testify/assert"
89 "go.uber.org/mock/gomock"
910 corev1 "k8s.io/api/core/v1"
1011 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -18,6 +19,8 @@ import (
1819//go:generate mockgen --build_flags=--mod=mod -package controller -destination ./mock_shared_index_informer_test.go k8s.io/client-go/tools/cache SharedIndexInformer
1920
2021func TestController_multiple_finalizers_race (t * testing.T ) {
22+ t .Parallel ()
23+
2124 ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
2225 defer cancel ()
2326
@@ -94,3 +97,45 @@ func TestController_multiple_finalizers_race(t *testing.T) {
9497 t .Errorf ("unexpected number of handler executions, got %d, want %d" , got , want )
9598 }
9699}
100+
101+ func TestController_no_registered_handlers (t * testing.T ) {
102+ t .Parallel ()
103+
104+ queue := workqueue .NewRateLimitingQueue (workqueue .DefaultControllerRateLimiter ())
105+ defer queue .ShutDown ()
106+ store := cache .NewStore (cache .MetaNamespaceKeyFunc )
107+
108+ ctrl := gomock .NewController (t )
109+ informer := NewMockSharedIndexInformer (ctrl )
110+ informer .EXPECT ().GetStore ().Return (store ).AnyTimes ()
111+ handler := & SharedHandler {controllerGVR : corev1 .SchemeGroupVersion .WithResource ("ConfigMap" ).String ()}
112+ c := & controller {
113+ informer : informer ,
114+ workqueue : queue ,
115+ handler : handler ,
116+ }
117+
118+ ctx , cancel := context .WithTimeout (context .Background (), 10 * time .Second )
119+ defer cancel ()
120+ assert .NotPanics (t , func () {
121+ go c .runWorker ()
122+
123+ cm := & corev1.ConfigMap {
124+ ObjectMeta : metav1.ObjectMeta {
125+ Namespace : "test-ns" ,
126+ Name : "test-cm" ,
127+ Finalizers : []string {"test-finalizer-1" , "test-finalizer-2" },
128+ DeletionTimestamp : ptr .To (metav1 .Now ()),
129+ UID : uuid .NewUUID (),
130+ },
131+ }
132+ key := "test-ns/test-cm"
133+
134+ if err := store .Add (cm ); err != nil {
135+ t .Fatal (err )
136+ }
137+ queue .Add (key )
138+
139+ <- ctx .Done ()
140+ })
141+ }
0 commit comments