@@ -168,3 +168,138 @@ func Test_defaultBranchForNewTag(t *testing.T) {
168
168
})
169
169
}
170
170
}
171
+
172
+ func Test_validateConfig (t * testing.T ) {
173
+ tests := []struct {
174
+ name string
175
+ args * notesCmdConfig
176
+ wantErr bool
177
+ errorMessage string
178
+ }{
179
+ {
180
+ name : "Missing fromRef or newTag when branch is set only" ,
181
+ args : & notesCmdConfig {
182
+ branch : "main" ,
183
+ },
184
+ wantErr : true ,
185
+ errorMessage : "at least one of --from or --release need to be set" ,
186
+ },
187
+ {
188
+ name : "Missing branch or newTag when fromRef is set only" ,
189
+ args : & notesCmdConfig {
190
+ fromRef : "ref1/tags" ,
191
+ },
192
+ wantErr : true ,
193
+ errorMessage : "at least one of --branch or --release need to be set" ,
194
+ },
195
+ {
196
+ name : "Invalid fromRef" ,
197
+ args : & notesCmdConfig {
198
+ fromRef : "invalid" ,
199
+ branch : "main" ,
200
+ },
201
+ wantErr : true ,
202
+ errorMessage : "invalid ref invalid: must follow [type]/[value]" ,
203
+ },
204
+ {
205
+ name : "Invalid toRef" ,
206
+ args : & notesCmdConfig {
207
+ toRef : "invalid" ,
208
+ branch : "main" ,
209
+ fromRef : "ref1/tags" ,
210
+ },
211
+ wantErr : true ,
212
+ errorMessage : "invalid ref invalid: must follow [type]/[value]" ,
213
+ },
214
+ {
215
+ name : "Valid fromRef, toRef, and newTag" ,
216
+ args : & notesCmdConfig {
217
+ fromRef : "ref1/tags" ,
218
+ toRef : "ref2/tags" ,
219
+ newTag : "v1.0.0" ,
220
+ },
221
+ wantErr : false ,
222
+ },
223
+ {
224
+ name : "Missing branch when newTag is set" ,
225
+ args : & notesCmdConfig {
226
+ branch : "main" ,
227
+ toRef : "ref2/tags" ,
228
+ newTag : "v1.0.0" ,
229
+ },
230
+ wantErr : false ,
231
+ },
232
+ }
233
+ for _ , tt := range tests {
234
+ t .Run (tt .name , func (t * testing.T ) {
235
+ err := validateConfig (tt .args )
236
+ if tt .wantErr {
237
+ if err == nil || err .Error () != tt .errorMessage {
238
+ t .Errorf ("expected error '%s', got '%v'" , tt .errorMessage , err )
239
+ }
240
+ } else if err != nil {
241
+ t .Errorf ("unexpected error: %v" , err )
242
+ }
243
+ })
244
+ }
245
+ }
246
+
247
+ func Test_computeConfigDefaults (t * testing.T ) {
248
+ tests := []struct {
249
+ name string
250
+ args * notesCmdConfig
251
+ want * notesCmdConfig
252
+ wantErr bool
253
+ }{
254
+ {
255
+ name : "Calculate fromRef when newTag is a new minor release and toRef" ,
256
+ args : & notesCmdConfig {
257
+ branch : "develop" ,
258
+ newTag : "v1.1.0" ,
259
+ },
260
+ want : & notesCmdConfig {
261
+ fromRef : "tags/v1.0.0" ,
262
+ branch : "develop" ,
263
+ toRef : "heads/develop" ,
264
+ newTag : "v1.1.0" ,
265
+ },
266
+ wantErr : false ,
267
+ },
268
+ {
269
+ name : "Calculate fromRef when newTag is not a new minor release, branch and toRef" ,
270
+ args : & notesCmdConfig {
271
+ newTag : "v1.1.3" ,
272
+ },
273
+ want : & notesCmdConfig {
274
+ fromRef : "tags/v1.1.2" ,
275
+ branch : "release-1.1" ,
276
+ toRef : "heads/release-1.1" ,
277
+ newTag : "v1.1.3" ,
278
+ },
279
+ wantErr : false ,
280
+ },
281
+ {
282
+ name : "Fail when newTag is not a valid semver" ,
283
+ args : & notesCmdConfig {
284
+ newTag : "invalid-tag" ,
285
+ },
286
+ want : nil ,
287
+ wantErr : true ,
288
+ },
289
+ }
290
+ for _ , tt := range tests {
291
+ t .Run (tt .name , func (t * testing.T ) {
292
+ err := computeConfigDefaults (tt .args )
293
+ g := NewWithT (t )
294
+ if tt .wantErr {
295
+ g .Expect (err ).To (HaveOccurred ())
296
+ g .Expect (err .Error ()).To (ContainSubstring ("invalid --release, is not a semver:" ))
297
+ } else {
298
+ g .Expect (err ).ToNot (HaveOccurred ())
299
+ g .Expect (tt .args .fromRef ).To (Equal (tt .want .fromRef ))
300
+ g .Expect (tt .args .branch ).To (Equal (tt .want .branch ))
301
+ g .Expect (tt .args .toRef ).To (Equal (tt .want .toRef ))
302
+ }
303
+ })
304
+ }
305
+ }
0 commit comments