@@ -25,11 +25,14 @@ import (
25
25
. "github.com/onsi/gomega"
26
26
"go.uber.org/goleak"
27
27
corev1 "k8s.io/api/core/v1"
28
+ "k8s.io/utils/pointer"
28
29
29
30
"sigs.k8s.io/controller-runtime/pkg/client"
31
+ "sigs.k8s.io/controller-runtime/pkg/config/v1alpha1"
30
32
"sigs.k8s.io/controller-runtime/pkg/controller"
31
33
"sigs.k8s.io/controller-runtime/pkg/event"
32
34
"sigs.k8s.io/controller-runtime/pkg/handler"
35
+ internalcontroller "sigs.k8s.io/controller-runtime/pkg/internal/controller"
33
36
"sigs.k8s.io/controller-runtime/pkg/manager"
34
37
"sigs.k8s.io/controller-runtime/pkg/reconcile"
35
38
"sigs.k8s.io/controller-runtime/pkg/runtime/inject"
@@ -142,6 +145,39 @@ var _ = Describe("controller.Controller", func() {
142
145
clientTransport .CloseIdleConnections ()
143
146
Eventually (func () error { return goleak .Find (currentGRs ) }).Should (Succeed ())
144
147
})
148
+
149
+ It ("should default RecoverPanic from the manager" , func () {
150
+ m , err := manager .New (cfg , manager.Options {Controller : v1alpha1.ControllerConfigurationSpec {RecoverPanic : pointer .Bool (true )}})
151
+ Expect (err ).NotTo (HaveOccurred ())
152
+
153
+ c , err := controller .New ("new-controller" , m , controller.Options {
154
+ Reconciler : reconcile .Func (nil ),
155
+ })
156
+ Expect (err ).NotTo (HaveOccurred ())
157
+
158
+ ctrl , ok := c .(* internalcontroller.Controller )
159
+ Expect (ok ).To (BeTrue ())
160
+
161
+ Expect (ctrl .RecoverPanic ).NotTo (BeNil ())
162
+ Expect (* ctrl .RecoverPanic ).To (BeTrue ())
163
+ })
164
+
165
+ It ("should not override RecoverPanic on the controller" , func () {
166
+ m , err := manager .New (cfg , manager.Options {Controller : v1alpha1.ControllerConfigurationSpec {RecoverPanic : pointer .Bool (true )}})
167
+ Expect (err ).NotTo (HaveOccurred ())
168
+
169
+ c , err := controller .New ("new-controller" , m , controller.Options {
170
+ Reconciler : reconcile .Func (nil ),
171
+ RecoverPanic : pointer .Bool (false ),
172
+ })
173
+ Expect (err ).NotTo (HaveOccurred ())
174
+
175
+ ctrl , ok := c .(* internalcontroller.Controller )
176
+ Expect (ok ).To (BeTrue ())
177
+
178
+ Expect (ctrl .RecoverPanic ).NotTo (BeNil ())
179
+ Expect (* ctrl .RecoverPanic ).To (BeFalse ())
180
+ })
145
181
})
146
182
})
147
183
0 commit comments