@@ -44,6 +44,7 @@ import (
4444 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4545 "k8s.io/client-go/tools/record"
4646 kstatus "sigs.k8s.io/cli-utils/pkg/kstatus/status"
47+ ctrl "sigs.k8s.io/controller-runtime"
4748 "sigs.k8s.io/controller-runtime/pkg/client"
4849 fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake"
4950 "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -66,6 +67,45 @@ import (
6667 "github.com/fluxcd/source-controller/internal/reconcile/summarize"
6768)
6869
70+ func TestHelmChartReconciler_deleteBeforeFinalizer (t * testing.T ) {
71+ g := NewWithT (t )
72+
73+ namespaceName := "helmchart-" + randStringRunes (5 )
74+ namespace := & corev1.Namespace {
75+ ObjectMeta : metav1.ObjectMeta {Name : namespaceName },
76+ }
77+ g .Expect (k8sClient .Create (ctx , namespace )).ToNot (HaveOccurred ())
78+ t .Cleanup (func () {
79+ g .Expect (k8sClient .Delete (ctx , namespace )).NotTo (HaveOccurred ())
80+ })
81+
82+ helmchart := & helmv1.HelmChart {}
83+ helmchart .Name = "test-helmchart"
84+ helmchart .Namespace = namespaceName
85+ helmchart .Spec = helmv1.HelmChartSpec {
86+ Interval : metav1.Duration {Duration : interval },
87+ Chart : "foo" ,
88+ SourceRef : helmv1.LocalHelmChartSourceReference {
89+ Kind : "HelmRepository" ,
90+ Name : "bar" ,
91+ },
92+ }
93+ // Add a test finalizer to prevent the object from getting deleted.
94+ helmchart .SetFinalizers ([]string {"test-finalizer" })
95+ g .Expect (k8sClient .Create (ctx , helmchart )).NotTo (HaveOccurred ())
96+ // Add deletion timestamp by deleting the object.
97+ g .Expect (k8sClient .Delete (ctx , helmchart )).NotTo (HaveOccurred ())
98+
99+ r := & HelmChartReconciler {
100+ Client : k8sClient ,
101+ EventRecorder : record .NewFakeRecorder (32 ),
102+ Storage : testStorage ,
103+ }
104+ // NOTE: Only a real API server responds with an error in this scenario.
105+ _ , err := r .Reconcile (ctx , ctrl.Request {NamespacedName : client .ObjectKeyFromObject (helmchart )})
106+ g .Expect (err ).NotTo (HaveOccurred ())
107+ }
108+
69109func TestHelmChartReconciler_Reconcile (t * testing.T ) {
70110 g := NewWithT (t )
71111
0 commit comments