@@ -325,3 +325,180 @@ func TestPublishReleaseNotesIndex(t *testing.T) {
325
325
}
326
326
}
327
327
}
328
+
329
+ func TestVerifyLatestUpdate (t * testing.T ) {
330
+ for _ , tc := range []struct {
331
+ prepare func (* releasefakes.FakePublisherClient , string )
332
+ version string
333
+ gcsVersion string
334
+ needsUpdate bool
335
+ shouldError bool
336
+ }{
337
+ { // success same version
338
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
339
+ mock .NormalizePathReturns ("" , nil )
340
+ mock .GSUtilOutputReturns (gcsVersion , nil )
341
+ },
342
+ version : "v1.24.0" ,
343
+ gcsVersion : "v1.24.0" ,
344
+ needsUpdate : false ,
345
+ shouldError : false ,
346
+ },
347
+
348
+ { // success version > gcsVersion (patch)
349
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
350
+ mock .NormalizePathReturns ("" , nil )
351
+ mock .GSUtilOutputReturns (gcsVersion , nil )
352
+ },
353
+ version : "v1.24.1" ,
354
+ gcsVersion : "v1.24.0" ,
355
+ needsUpdate : true ,
356
+ shouldError : false ,
357
+ },
358
+ { // success version < gcsVersion (patch)
359
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
360
+ mock .NormalizePathReturns ("" , nil )
361
+ mock .GSUtilOutputReturns (gcsVersion , nil )
362
+ },
363
+ version : "v1.24.0" ,
364
+ gcsVersion : "v1.24.1" ,
365
+ needsUpdate : false ,
366
+ shouldError : false ,
367
+ },
368
+
369
+ { // success version > gcsVersion (minor)
370
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
371
+ mock .NormalizePathReturns ("" , nil )
372
+ mock .GSUtilOutputReturns (gcsVersion , nil )
373
+ },
374
+ version : "v1.25.0" ,
375
+ gcsVersion : "v1.24.0" ,
376
+ needsUpdate : true ,
377
+ shouldError : false ,
378
+ },
379
+ { // success version < gcsVersion (minor)
380
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
381
+ mock .NormalizePathReturns ("" , nil )
382
+ mock .GSUtilOutputReturns (gcsVersion , nil )
383
+ },
384
+ version : "v1.23.0" ,
385
+ gcsVersion : "v1.24.0" ,
386
+ needsUpdate : false ,
387
+ shouldError : false ,
388
+ },
389
+
390
+ { // success version = gcsVersion (with build version)
391
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
392
+ mock .NormalizePathReturns ("" , nil )
393
+ mock .GSUtilOutputReturns (gcsVersion , nil )
394
+ },
395
+ version : "v1.28.0-7+c4e17abb04728e" ,
396
+ gcsVersion : "v1.28.0-7+c4e17abb04728e" ,
397
+ needsUpdate : false ,
398
+ shouldError : false ,
399
+ },
400
+ { // success version > gcsVersion (with build version)
401
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
402
+ mock .NormalizePathReturns ("" , nil )
403
+ mock .GSUtilOutputReturns (gcsVersion , nil )
404
+ },
405
+ version : "v1.28.0-9+aaaaaabb04728e" ,
406
+ gcsVersion : "v1.28.0-7+c4e17abb04728e" ,
407
+ needsUpdate : true ,
408
+ shouldError : false ,
409
+ },
410
+ { // success version < gcsVersion (with build version)
411
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
412
+ mock .NormalizePathReturns ("" , nil )
413
+ mock .GSUtilOutputReturns (gcsVersion , nil )
414
+ },
415
+ version : "v1.28.0-7+c4e17abb04728e" ,
416
+ gcsVersion : "v1.28.0-9+aaaaaabb04728e" ,
417
+ needsUpdate : false ,
418
+ shouldError : false ,
419
+ },
420
+ { // success version > gcsVersion (with build version)
421
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
422
+ mock .NormalizePathReturns ("" , nil )
423
+ mock .GSUtilOutputReturns (gcsVersion , nil )
424
+ },
425
+ version : "v1.28.1-1+aaaaaabb04728e" ,
426
+ gcsVersion : "v1.28.0-7+c4e17abb04728e" ,
427
+ needsUpdate : true ,
428
+ shouldError : false ,
429
+ },
430
+ { // success version = gcsVersion (with build version, prerelease)
431
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
432
+ mock .NormalizePathReturns ("" , nil )
433
+ mock .GSUtilOutputReturns (gcsVersion , nil )
434
+ },
435
+ version : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
436
+ gcsVersion : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
437
+ needsUpdate : false ,
438
+ shouldError : false ,
439
+ },
440
+ { // success version > gcsVersion (with build version, prerelease)
441
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
442
+ mock .NormalizePathReturns ("" , nil )
443
+ mock .GSUtilOutputReturns (gcsVersion , nil )
444
+ },
445
+ version : "v1.28.0-rc.1.10+3fb5377b25ec51" ,
446
+ gcsVersion : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
447
+ needsUpdate : true ,
448
+ shouldError : false ,
449
+ },
450
+ { // success version < gcsVersion (with build version, prerelease)
451
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
452
+ mock .NormalizePathReturns ("" , nil )
453
+ mock .GSUtilOutputReturns (gcsVersion , nil )
454
+ },
455
+ version : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
456
+ gcsVersion : "v1.28.0-rc.1.10+3fb5377b25ec51" ,
457
+ needsUpdate : false ,
458
+ shouldError : false ,
459
+ },
460
+ { // success version < gcsVersion (with build version, prerelease)
461
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
462
+ mock .NormalizePathReturns ("" , nil )
463
+ mock .GSUtilOutputReturns (gcsVersion , nil )
464
+ },
465
+ version : "v1.28.0-beta.1.9+3fb5377b25ec51" ,
466
+ gcsVersion : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
467
+ needsUpdate : false ,
468
+ shouldError : false ,
469
+ },
470
+ { // success version > gcsVersion (with build version, prerelease)
471
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
472
+ mock .NormalizePathReturns ("" , nil )
473
+ mock .GSUtilOutputReturns (gcsVersion , nil )
474
+ },
475
+ version : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
476
+ gcsVersion : "v1.28.0-beta.1.9+3fb5377b25ec51" ,
477
+ needsUpdate : true ,
478
+ shouldError : false ,
479
+ },
480
+ { // success version > gcsVersion (with build version, stable and prerelease)
481
+ prepare : func (mock * releasefakes.FakePublisherClient , gcsVersion string ) {
482
+ mock .NormalizePathReturns ("" , nil )
483
+ mock .GSUtilOutputReturns (gcsVersion , nil )
484
+ },
485
+ version : "v1.28.0-7+c4e17abb04728e" ,
486
+ gcsVersion : "v1.28.0-rc.1.9+3fb5377b25ec51" ,
487
+ needsUpdate : true ,
488
+ shouldError : false ,
489
+ },
490
+ } {
491
+ sut := release .NewPublisher ()
492
+ clientMock := & releasefakes.FakePublisherClient {}
493
+ sut .SetClient (clientMock )
494
+ tc .prepare (clientMock , tc .gcsVersion )
495
+
496
+ needsUpdate , err := sut .VerifyLatestUpdate ("" , "" , tc .version )
497
+ if tc .shouldError {
498
+ require .NotNil (t , err )
499
+ } else {
500
+ require .Nil (t , err )
501
+ require .Equal (t , tc .needsUpdate , needsUpdate )
502
+ }
503
+ }
504
+ }
0 commit comments