@@ -2,13 +2,14 @@ package controllers_test
22
33import (
44 "context"
5+ "errors"
56 "fmt"
67 "testing"
78 "time"
89
910 "github.com/stretchr/testify/require"
1011 corev1 "k8s.io/api/core/v1"
11- "k8s.io/apimachinery/pkg/api/errors"
12+ apierrors "k8s.io/apimachinery/pkg/api/errors"
1213 "k8s.io/apimachinery/pkg/api/meta"
1314 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1415 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -32,18 +33,19 @@ import (
3233 "github.com/operator-framework/operator-controller/internal/operator-controller/labels"
3334)
3435
35- func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression (t * testing.T ) {
36+ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionReconciliation (t * testing.T ) {
3637 const (
3738 clusterExtensionRevisionName = "test-ext-1"
3839 )
3940
4041 testScheme := newScheme (t )
4142
4243 for _ , tc := range []struct {
43- name string
44- existingObjs func () []client.Object
45- revisionResult machinery.RevisionResult
46- validate func (* testing.T , client.Client )
44+ name string
45+ existingObjs func () []client.Object
46+ revisionResult machinery.RevisionResult
47+ revisionReconcileErr error
48+ validate func (* testing.T , client.Client )
4749 }{
4850 {
4951 name : "sets teardown finalizer" ,
@@ -175,6 +177,30 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
175177 require .Equal (t , int64 (1 ), cond .ObservedGeneration )
176178 },
177179 },
180+ {
181+ name : "set Progressing:True:RolloutError when there's an error reconciling the revision" ,
182+ revisionReconcileErr : errors .New ("some error" ),
183+
184+ existingObjs : func () []client.Object {
185+ ext := newTestClusterExtension ()
186+ rev1 := newTestClusterExtensionRevision (clusterExtensionRevisionName )
187+ require .NoError (t , controllerutil .SetControllerReference (ext , rev1 , testScheme ))
188+ return []client.Object {ext , rev1 }
189+ },
190+ validate : func (t * testing.T , c client.Client ) {
191+ rev := & ocv1.ClusterExtensionRevision {}
192+ err := c .Get (t .Context (), client.ObjectKey {
193+ Name : clusterExtensionRevisionName ,
194+ }, rev )
195+ require .NoError (t , err )
196+ cond := meta .FindStatusCondition (rev .Status .Conditions , ocv1 .TypeProgressing )
197+ require .NotNil (t , cond )
198+ require .Equal (t , metav1 .ConditionTrue , cond .Status )
199+ require .Equal (t , ocv1 .ClusterExtensionRevisionReasonRolloutError , cond .Reason )
200+ require .Equal (t , "some error" , cond .Message )
201+ require .Equal (t , int64 (1 ), cond .ObservedGeneration )
202+ },
203+ },
178204 {
179205 name : "set Progressing:True:RollingOut condition while revision is transitioning" ,
180206 revisionResult : mockRevisionResult {
@@ -317,7 +343,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
317343 Client : testClient ,
318344 RevisionEngine : & mockRevisionEngine {
319345 reconcile : func (ctx context.Context , rev machinerytypes.Revision , opts ... machinerytypes.RevisionReconcileOption ) (machinery.RevisionResult , error ) {
320- return tc .revisionResult , nil
346+ return tc .revisionResult , tc . revisionReconcileErr
321347 },
322348 },
323349 TrackingCache : & mockTrackingCache {},
@@ -327,9 +353,13 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
327353 },
328354 })
329355
330- // reconcile cluster extensionr evision
356+ // reconcile cluster extension revision
331357 require .Equal (t , ctrl.Result {}, result )
332- require .NoError (t , err )
358+ if tc .revisionReconcileErr == nil {
359+ require .NoError (t , err )
360+ } else {
361+ require .Contains (t , err .Error (), tc .revisionReconcileErr .Error ())
362+ }
333363
334364 // validate test case
335365 tc .validate (t , testClient )
@@ -517,7 +547,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_Deletion(t *testing.T) {
517547 Name : clusterExtensionRevisionName ,
518548 }, rev )
519549 require .Error (t , err )
520- require .True (t , errors .IsNotFound (err ))
550+ require .True (t , apierrors .IsNotFound (err ))
521551 },
522552 },
523553 {
0 commit comments