@@ -629,6 +629,7 @@ func TestAtomicRelease_Reconcile_Scenarios(t *testing.T) {
629
629
release .ObservedToSnapshot (release .ObserveRelease (releases [0 ])),
630
630
}
631
631
},
632
+ wantErr : ErrExceededMaxRetries ,
632
633
},
633
634
{
634
635
name : "install test failure with remediation" ,
@@ -654,6 +655,7 @@ func TestAtomicRelease_Reconcile_Scenarios(t *testing.T) {
654
655
snap ,
655
656
}
656
657
},
658
+ wantErr : ErrExceededMaxRetries ,
657
659
},
658
660
{
659
661
name : "install test failure with test ignore" ,
@@ -759,6 +761,7 @@ func TestAtomicRelease_Reconcile_Scenarios(t *testing.T) {
759
761
release .ObservedToSnapshot (release .ObserveRelease (releases [0 ])),
760
762
}
761
763
},
764
+ wantErr : ErrExceededMaxRetries ,
762
765
},
763
766
{
764
767
name : "upgrade failure with uninstall remediation" ,
@@ -799,6 +802,7 @@ func TestAtomicRelease_Reconcile_Scenarios(t *testing.T) {
799
802
release .ObservedToSnapshot (release .ObserveRelease (releases [0 ])),
800
803
}
801
804
},
805
+ wantErr : ErrExceededMaxRetries ,
802
806
},
803
807
{
804
808
name : "upgrade test failure with remediation" ,
@@ -841,6 +845,7 @@ func TestAtomicRelease_Reconcile_Scenarios(t *testing.T) {
841
845
release .ObservedToSnapshot (release .ObserveRelease (releases [0 ])),
842
846
}
843
847
},
848
+ wantErr : ErrExceededMaxRetries ,
844
849
},
845
850
{
846
851
name : "upgrade test failure with test ignore" ,
@@ -928,6 +933,55 @@ func TestAtomicRelease_Reconcile_Scenarios(t *testing.T) {
928
933
},
929
934
wantErr : ErrExceededMaxRetries ,
930
935
},
936
+ {
937
+ name : "upgrade remediation results in exhausted retries" ,
938
+ releases : func (namespace string ) []* helmrelease.Release {
939
+ return []* helmrelease.Release {
940
+ testutil .BuildRelease (& helmrelease.MockReleaseOptions {
941
+ Name : mockReleaseName ,
942
+ Namespace : namespace ,
943
+ Version : 1 ,
944
+ Chart : testutil .BuildChart (),
945
+ Status : helmrelease .StatusSuperseded ,
946
+ }),
947
+ testutil .BuildRelease (& helmrelease.MockReleaseOptions {
948
+ Name : mockReleaseName ,
949
+ Namespace : namespace ,
950
+ Version : 2 ,
951
+ Chart : testutil .BuildChart (),
952
+ Status : helmrelease .StatusSuperseded ,
953
+ }),
954
+ testutil .BuildRelease (& helmrelease.MockReleaseOptions {
955
+ Name : mockReleaseName ,
956
+ Namespace : namespace ,
957
+ Version : 3 ,
958
+ Chart : testutil .BuildChart (),
959
+ Status : helmrelease .StatusFailed ,
960
+ }),
961
+ }
962
+ },
963
+ spec : func (spec * v2.HelmReleaseSpec ) {
964
+ spec .Upgrade = & v2.Upgrade {
965
+ Remediation : & v2.UpgradeRemediation {
966
+ Retries : 1 ,
967
+ },
968
+ }
969
+ },
970
+ status : func (namespace string , releases []* helmrelease.Release ) v2.HelmReleaseStatus {
971
+ return v2.HelmReleaseStatus {
972
+ History : v2.Snapshots {
973
+ release .ObservedToSnapshot (release .ObserveRelease (releases [2 ])),
974
+ release .ObservedToSnapshot (release .ObserveRelease (releases [1 ])),
975
+ release .ObservedToSnapshot (release .ObserveRelease (releases [0 ])),
976
+ },
977
+ LastAttemptedReleaseAction : v2 .ReleaseActionUpgrade ,
978
+ Failures : 2 ,
979
+ UpgradeFailures : 2 ,
980
+ }
981
+ },
982
+ chart : testutil .BuildChart (),
983
+ wantErr : ErrExceededMaxRetries ,
984
+ },
931
985
}
932
986
for _ , tt := range tests {
933
987
t .Run (tt .name , func (t * testing.T ) {
0 commit comments