@@ -1038,3 +1038,142 @@ func TestCopyGlobalAllowlist(t *testing.T) {
10381038 })
10391039 }
10401040}
1041+
1042+ func TestDetermineNextVersion (t * testing.T ) {
1043+ t .Parallel ()
1044+ for _ , test := range []struct {
1045+ name string
1046+ commits []* conventionalcommits.ConventionalCommit
1047+ currentVersion string
1048+ libraryID string
1049+ config * config.Config
1050+ librarianConfig * config.LibrarianConfig
1051+ wantVersion string
1052+ wantErr bool
1053+ wantErrMsg string
1054+ }{
1055+ {
1056+ name : "from commits" ,
1057+ commits : []* conventionalcommits.ConventionalCommit {
1058+ {Type : "feat" },
1059+ },
1060+ config : & config.Config {
1061+ Library : "some-library" ,
1062+ },
1063+ libraryID : "some-library" ,
1064+ librarianConfig : & config.LibrarianConfig {
1065+ Libraries : []* config.LibraryConfig {},
1066+ },
1067+ currentVersion : "1.0.0" ,
1068+ wantVersion : "1.1.0" ,
1069+ wantErr : false ,
1070+ },
1071+ {
1072+ name : "with CLI override version" ,
1073+ commits : []* conventionalcommits.ConventionalCommit {
1074+ {Type : "feat" },
1075+ },
1076+ config : & config.Config {
1077+ Library : "some-library" ,
1078+ LibraryVersion : "1.2.3" ,
1079+ },
1080+ libraryID : "some-library" ,
1081+ librarianConfig : & config.LibrarianConfig {
1082+ Libraries : []* config.LibraryConfig {
1083+ & config.LibraryConfig {
1084+ LibraryID : "some-library" ,
1085+ NextVersion : "2.3.4" ,
1086+ },
1087+ },
1088+ },
1089+ currentVersion : "1.0.0" ,
1090+ wantVersion : "1.2.3" ,
1091+ wantErr : false ,
1092+ },
1093+ {
1094+ name : "with CLI override version cannot revert version" ,
1095+ commits : []* conventionalcommits.ConventionalCommit {
1096+ {Type : "feat" },
1097+ },
1098+ config : & config.Config {
1099+ Library : "some-library" ,
1100+ LibraryVersion : "1.2.3" ,
1101+ },
1102+ libraryID : "some-library" ,
1103+ librarianConfig : & config.LibrarianConfig {
1104+ Libraries : []* config.LibraryConfig {
1105+ & config.LibraryConfig {
1106+ LibraryID : "some-library" ,
1107+ },
1108+ },
1109+ },
1110+ currentVersion : "2.4.0" ,
1111+ wantVersion : "2.5.0" ,
1112+ wantErr : false ,
1113+ },
1114+ {
1115+ name : "with config.yaml override version" ,
1116+ commits : []* conventionalcommits.ConventionalCommit {
1117+ {Type : "feat" },
1118+ },
1119+ config : & config.Config {
1120+ Library : "some-library" ,
1121+ },
1122+ libraryID : "some-library" ,
1123+ librarianConfig : & config.LibrarianConfig {
1124+ Libraries : []* config.LibraryConfig {
1125+ & config.LibraryConfig {
1126+ LibraryID : "some-library" ,
1127+ NextVersion : "2.3.4" ,
1128+ },
1129+ },
1130+ },
1131+ currentVersion : "1.0.0" ,
1132+ wantVersion : "2.3.4" ,
1133+ wantErr : false ,
1134+ },
1135+ {
1136+ name : "with outdated config.yaml override version" ,
1137+ commits : []* conventionalcommits.ConventionalCommit {
1138+ {Type : "feat" },
1139+ },
1140+ config : & config.Config {
1141+ Library : "some-library" ,
1142+ },
1143+ libraryID : "some-library" ,
1144+ librarianConfig : & config.LibrarianConfig {
1145+ Libraries : []* config.LibraryConfig {
1146+ & config.LibraryConfig {
1147+ LibraryID : "some-library" ,
1148+ NextVersion : "2.3.4" ,
1149+ },
1150+ },
1151+ },
1152+ currentVersion : "2.4.0" ,
1153+ wantVersion : "2.5.0" ,
1154+ wantErr : false ,
1155+ },
1156+ } {
1157+ t .Run (test .name , func (t * testing.T ) {
1158+ runner := & initRunner {
1159+ cfg : test .config ,
1160+ librarianConfig : test .librarianConfig ,
1161+ }
1162+ got , err := runner .determineNextVersion (test .commits , test .currentVersion , test .libraryID )
1163+ if test .wantErr {
1164+ if err == nil {
1165+ t .Error ("determineNextVersion() should return error" )
1166+ }
1167+
1168+ if ! strings .Contains (err .Error (), test .wantErrMsg ) {
1169+ t .Errorf ("want error message: %q, got %q" , test .wantErrMsg , err .Error ())
1170+ }
1171+
1172+ return
1173+ }
1174+ if diff := cmp .Diff (test .wantVersion , got ); diff != "" {
1175+ t .Errorf ("state mismatch (-want +got):\n %s" , diff )
1176+ }
1177+ })
1178+ }
1179+ }
0 commit comments