@@ -57,6 +57,7 @@ import (
57
57
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
58
58
59
59
sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
60
+ "github.com/fluxcd/source-controller/internal/features"
60
61
sreconcile "github.com/fluxcd/source-controller/internal/reconcile"
61
62
"github.com/fluxcd/source-controller/internal/reconcile/summarize"
62
63
"github.com/fluxcd/source-controller/pkg/git"
@@ -499,6 +500,7 @@ func TestGitRepositoryReconciler_reconcileSource_authStrategy(t *testing.T) {
499
500
Client : builder .Build (),
500
501
EventRecorder : record .NewFakeRecorder (32 ),
501
502
Storage : testStorage ,
503
+ features : features .FeatureGates (),
502
504
}
503
505
504
506
for _ , i := range testGitImplementations {
@@ -545,6 +547,7 @@ func TestGitRepositoryReconciler_reconcileSource_checkoutStrategy(t *testing.T)
545
547
name string
546
548
skipForImplementation string
547
549
reference * sourcev1.GitRepositoryRef
550
+ beforeFunc func (obj * sourcev1.GitRepository , latestRev string )
548
551
want sreconcile.Result
549
552
wantErr bool
550
553
wantRevision string
@@ -614,6 +617,34 @@ func TestGitRepositoryReconciler_reconcileSource_checkoutStrategy(t *testing.T)
614
617
wantRevision : "v1.0.0-alpha/<commit>" ,
615
618
want : sreconcile .ResultSuccess ,
616
619
},
620
+ {
621
+ name : "Optimized clone, Ready=True" ,
622
+ reference : & sourcev1.GitRepositoryRef {
623
+ Branch : "staging" ,
624
+ },
625
+ beforeFunc : func (obj * sourcev1.GitRepository , latestRev string ) {
626
+ obj .Status = sourcev1.GitRepositoryStatus {
627
+ Artifact : & sourcev1.Artifact {
628
+ Revision : "staging/" + latestRev ,
629
+ },
630
+ }
631
+ conditions .MarkTrue (obj , meta .ReadyCondition , meta .SucceededReason , "ready" )
632
+ },
633
+ want : sreconcile .ResultEmpty ,
634
+ wantErr : true ,
635
+ wantRevision : "staging/<commit>" ,
636
+ },
637
+ {
638
+ name : "Optimized clone, Ready=False" ,
639
+ reference : & sourcev1.GitRepositoryRef {
640
+ Branch : "staging" ,
641
+ },
642
+ beforeFunc : func (obj * sourcev1.GitRepository , latestRev string ) {
643
+ conditions .MarkFalse (obj , meta .ReadyCondition , meta .FailedReason , "not ready" )
644
+ },
645
+ want : sreconcile .ResultSuccess ,
646
+ wantRevision : "staging/<commit>" ,
647
+ },
617
648
}
618
649
619
650
server , err := gittestserver .NewTempGitServer ()
@@ -641,6 +672,7 @@ func TestGitRepositoryReconciler_reconcileSource_checkoutStrategy(t *testing.T)
641
672
Client : fakeclient .NewClientBuilder ().WithScheme (runtime .NewScheme ()).Build (),
642
673
EventRecorder : record .NewFakeRecorder (32 ),
643
674
Storage : testStorage ,
675
+ features : features .FeatureGates (),
644
676
}
645
677
646
678
for _ , tt := range tests {
@@ -674,6 +706,10 @@ func TestGitRepositoryReconciler_reconcileSource_checkoutStrategy(t *testing.T)
674
706
obj := obj .DeepCopy ()
675
707
obj .Spec .GitImplementation = i
676
708
709
+ if tt .beforeFunc != nil {
710
+ tt .beforeFunc (obj , headRef .Hash ().String ())
711
+ }
712
+
677
713
var commit git.Commit
678
714
var includes artifactSet
679
715
got , err := r .reconcileSource (ctx , obj , & commit , & includes , tmpDir )
@@ -682,7 +718,7 @@ func TestGitRepositoryReconciler_reconcileSource_checkoutStrategy(t *testing.T)
682
718
}
683
719
g .Expect (err != nil ).To (Equal (tt .wantErr ))
684
720
g .Expect (got ).To (Equal (tt .want ))
685
- if tt .wantRevision != "" {
721
+ if tt .wantRevision != "" && ! tt . wantErr {
686
722
revision := strings .ReplaceAll (tt .wantRevision , "<commit>" , headRef .Hash ().String ())
687
723
g .Expect (commit .String ()).To (Equal (revision ))
688
724
g .Expect (conditions .IsTrue (obj , sourcev1 .ArtifactOutdatedCondition )).To (BeTrue ())
@@ -857,6 +893,7 @@ func TestGitRepositoryReconciler_reconcileArtifact(t *testing.T) {
857
893
r := & GitRepositoryReconciler {
858
894
EventRecorder : record .NewFakeRecorder (32 ),
859
895
Storage : testStorage ,
896
+ features : features .FeatureGates (),
860
897
}
861
898
862
899
obj := & sourcev1.GitRepository {
@@ -1042,6 +1079,7 @@ func TestGitRepositoryReconciler_reconcileInclude(t *testing.T) {
1042
1079
EventRecorder : record .NewFakeRecorder (32 ),
1043
1080
Storage : storage ,
1044
1081
requeueDependency : dependencyInterval ,
1082
+ features : features .FeatureGates (),
1045
1083
}
1046
1084
1047
1085
obj := & sourcev1.GitRepository {
@@ -1206,6 +1244,7 @@ func TestGitRepositoryReconciler_reconcileStorage(t *testing.T) {
1206
1244
r := & GitRepositoryReconciler {
1207
1245
EventRecorder : record .NewFakeRecorder (32 ),
1208
1246
Storage : testStorage ,
1247
+ features : features .FeatureGates (),
1209
1248
}
1210
1249
1211
1250
obj := & sourcev1.GitRepository {
@@ -1247,6 +1286,7 @@ func TestGitRepositoryReconciler_reconcileDelete(t *testing.T) {
1247
1286
r := & GitRepositoryReconciler {
1248
1287
EventRecorder : record .NewFakeRecorder (32 ),
1249
1288
Storage : testStorage ,
1289
+ features : features .FeatureGates (),
1250
1290
}
1251
1291
1252
1292
obj := & sourcev1.GitRepository {
@@ -1384,6 +1424,7 @@ func TestGitRepositoryReconciler_verifyCommitSignature(t *testing.T) {
1384
1424
r := & GitRepositoryReconciler {
1385
1425
EventRecorder : record .NewFakeRecorder (32 ),
1386
1426
Client : builder .Build (),
1427
+ features : features .FeatureGates (),
1387
1428
}
1388
1429
1389
1430
obj := & sourcev1.GitRepository {
@@ -1525,6 +1566,7 @@ func TestGitRepositoryReconciler_ConditionsUpdate(t *testing.T) {
1525
1566
Client : builder .Build (),
1526
1567
EventRecorder : record .NewFakeRecorder (32 ),
1527
1568
Storage : testStorage ,
1569
+ features : features .FeatureGates (),
1528
1570
}
1529
1571
1530
1572
key := client .ObjectKeyFromObject (obj )
@@ -1857,6 +1899,7 @@ func TestGitRepositoryReconciler_notify(t *testing.T) {
1857
1899
1858
1900
reconciler := & GitRepositoryReconciler {
1859
1901
EventRecorder : recorder ,
1902
+ features : features .FeatureGates (),
1860
1903
}
1861
1904
commit := & git.Commit {
1862
1905
Message : "test commit" ,
0 commit comments