@@ -894,3 +894,53 @@ func TestVerifyFeatureRemoval(t *testing.T) {
894
894
})
895
895
}
896
896
}
897
+
898
+ func TestVerifyAlphaFeatures (t * testing.T ) {
899
+ tests := []struct {
900
+ name string
901
+ featureList []featureInfo
902
+ expectErr bool
903
+ expectedErrMsg string
904
+ }{
905
+ {
906
+ name : "no alpha features" ,
907
+ featureList : []featureInfo {
908
+ {Name : "FeatureB" , VersionedSpecs : []featureSpec {{Version : "1.0" , PreRelease : "Beta" }}},
909
+ {Name : "FeatureC" , VersionedSpecs : []featureSpec {{Version : "1.0" , PreRelease : "GA" , LockToDefault : true }}},
910
+ },
911
+ },
912
+ {
913
+ name : "alpha feature disabled" ,
914
+ featureList : []featureInfo {
915
+ {Name : "FeatureA" , VersionedSpecs : []featureSpec {{Version : "1.0" , PreRelease : "Alpha" , Default : false }}},
916
+ {Name : "FeatureB" , VersionedSpecs : []featureSpec {{Version : "1.0" , PreRelease : "Beta" }}},
917
+ },
918
+ },
919
+ {
920
+ name : "alpha feature enabled" ,
921
+ featureList : []featureInfo {
922
+ {Name : "FeatureA" , VersionedSpecs : []featureSpec {{Version : "1.0" , PreRelease : "Alpha" , Default : true }}},
923
+ {Name : "FeatureB" , VersionedSpecs : []featureSpec {{Version : "1.0" , PreRelease : "Beta" }}},
924
+ },
925
+ expectErr : true ,
926
+ expectedErrMsg : "alpha feature FeatureA cannot be enabled by default" ,
927
+ },
928
+ }
929
+ for _ , tc := range tests {
930
+ t .Run (tc .name , func (t * testing.T ) {
931
+ err := verifyAlphaFeatures (tc .featureList )
932
+ if tc .expectErr {
933
+ if err == nil {
934
+ t .Fatalf ("expected error, got nil" )
935
+ }
936
+ if ! strings .Contains (err .Error (), tc .expectedErrMsg ) {
937
+ t .Fatalf ("expected error message to contain %q, got %q" , tc .expectedErrMsg , err .Error ())
938
+ }
939
+ return
940
+ }
941
+ if err != nil {
942
+ t .Fatalf ("unexpected error: %v" , err )
943
+ }
944
+ })
945
+ }
946
+ }
0 commit comments