From 985569b5dd253d1c27b05c719f26f2a7a08b085a Mon Sep 17 00:00:00 2001 From: Stefan Bueringer Date: Sat, 22 Jul 2023 09:08:26 +0200 Subject: [PATCH] builder: return error when multiple reconcilers are set --- pkg/builder/controller.go | 3 +++ pkg/builder/controller_test.go | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/builder/controller.go b/pkg/builder/controller.go index 570cfd63d0..2bcb9b0de9 100644 --- a/pkg/builder/controller.go +++ b/pkg/builder/controller.go @@ -344,6 +344,9 @@ func (blder *Builder) doController(r reconcile.Reconciler) error { globalOpts := blder.mgr.GetControllerOptions() ctrlOptions := blder.ctrlOptions + if ctrlOptions.Reconciler != nil && r != nil { + return errors.New("reconciler was set via WithOptions() and via Build() or Complete()") + } if ctrlOptions.Reconciler == nil { ctrlOptions.Reconciler = r } diff --git a/pkg/builder/controller_test.go b/pkg/builder/controller_test.go index dd98c2e565..ff734abd83 100644 --- a/pkg/builder/controller_test.go +++ b/pkg/builder/controller_test.go @@ -298,7 +298,7 @@ var _ = Describe("application", func() { Expect(instance).NotTo(BeNil()) }) - It("should prefer reconciler from options during creation of controller", func() { + It("should not allow multiple reconcilers during creation of controller", func() { newController = func(name string, mgr manager.Manager, options controller.Options) (controller.Controller, error) { if options.Reconciler != (typedNoop{}) { return nil, fmt.Errorf("Custom reconciler expected %T but found %T", typedNoop{}, options.Reconciler) @@ -315,8 +315,8 @@ var _ = Describe("application", func() { Owns(&appsv1.ReplicaSet{}). WithOptions(controller.Options{Reconciler: typedNoop{}}). Build(noop) - Expect(err).NotTo(HaveOccurred()) - Expect(instance).NotTo(BeNil()) + Expect(err).To(HaveOccurred()) + Expect(instance).To(BeNil()) }) It("should allow multiple controllers for the same kind", func() {