@@ -441,6 +441,15 @@ func Test_gitHubRepository_getLatestContractRelease(t *testing.T) {
441
441
fmt .Fprint (w , "v0.3.1\n " )
442
442
})
443
443
444
+ // setup an handler for returning 4 fake releases but no actual tagged release
445
+ muxGoproxy .HandleFunc ("/github.com/o/r2/@v/list" , func (w http.ResponseWriter , r * http.Request ) {
446
+ testMethod (t , r , "GET" )
447
+ fmt .Fprint (w , "v0.5.0\n " )
448
+ fmt .Fprint (w , "v0.4.0\n " )
449
+ fmt .Fprint (w , "v0.3.2\n " )
450
+ fmt .Fprint (w , "v0.3.1\n " )
451
+ })
452
+
444
453
configVariablesClient := test .NewFakeVariableClient ()
445
454
446
455
type field struct {
@@ -480,6 +489,15 @@ func Test_gitHubRepository_getLatestContractRelease(t *testing.T) {
480
489
contract : "foo" ,
481
490
wantErr : false ,
482
491
},
492
+ {
493
+ name : "Return 404 if there is no release for the tag" ,
494
+ field : field {
495
+ providerConfig : config .NewProvider ("test" , "https://github.com/o/r2/releases/v0.99.0/path" , clusterctlv1 .CoreProviderType ),
496
+ },
497
+ want : "0.99.0" ,
498
+ contract : "v1alpha4" ,
499
+ wantErr : true ,
500
+ },
483
501
}
484
502
for _ , tt := range tests {
485
503
t .Run (tt .name , func (t * testing.T ) {
@@ -514,6 +532,11 @@ func Test_gitHubRepository_getLatestRelease(t *testing.T) {
514
532
fmt .Fprint (w , "v0.4.3-alpha\n " ) // prerelease
515
533
fmt .Fprint (w , "foo\n " ) // no semantic version tag
516
534
})
535
+ // And also expose a release for them
536
+ muxGoproxy .HandleFunc ("/api.github.com/repos/o/r1/releases/tags/v0.4.2" , func (w http.ResponseWriter , r * http.Request ) {
537
+ testMethod (t , r , "GET" )
538
+ fmt .Fprint (w , "{}\n " )
539
+ })
517
540
518
541
// Setup a handler for returning no releases.
519
542
muxGoproxy .HandleFunc ("/github.com/o/r2/@v/list" , func (w http.ResponseWriter , r * http.Request ) {
@@ -543,7 +566,7 @@ func Test_gitHubRepository_getLatestRelease(t *testing.T) {
543
566
{
544
567
name : "Get latest release, ignores pre-release version" ,
545
568
field : field {
546
- providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/latest /path" , clusterctlv1 .CoreProviderType ),
569
+ providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/v0.4.2 /path" , clusterctlv1 .CoreProviderType ),
547
570
},
548
571
want : "v0.4.2" ,
549
572
wantErr : false ,
@@ -559,7 +582,7 @@ func Test_gitHubRepository_getLatestRelease(t *testing.T) {
559
582
{
560
583
name : "Falls back to latest prerelease when no official release present" ,
561
584
field : field {
562
- providerConfig : config .NewProvider ("test" , "https://github.com/o/r3/releases/latest /path" , clusterctlv1 .CoreProviderType ),
585
+ providerConfig : config .NewProvider ("test" , "https://github.com/o/r3/releases/v0.1.0-alpha.2 /path" , clusterctlv1 .CoreProviderType ),
563
586
},
564
587
want : "v0.1.0-alpha.2" ,
565
588
wantErr : false ,
@@ -619,7 +642,7 @@ func Test_gitHubRepository_getLatestPatchRelease(t *testing.T) {
619
642
{
620
643
name : "Get latest patch release, no Major/Minor specified" ,
621
644
field : field {
622
- providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/latest /path" , clusterctlv1 .CoreProviderType ),
645
+ providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/v1.3.2 /path" , clusterctlv1 .CoreProviderType ),
623
646
},
624
647
minor : nil ,
625
648
major : nil ,
@@ -629,7 +652,7 @@ func Test_gitHubRepository_getLatestPatchRelease(t *testing.T) {
629
652
{
630
653
name : "Get latest patch release, for Major 0 and Minor 3" ,
631
654
field : field {
632
- providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/latest /path" , clusterctlv1 .CoreProviderType ),
655
+ providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/v0.3.2 /path" , clusterctlv1 .CoreProviderType ),
633
656
},
634
657
major : & major0 ,
635
658
minor : & minor3 ,
@@ -639,7 +662,7 @@ func Test_gitHubRepository_getLatestPatchRelease(t *testing.T) {
639
662
{
640
663
name : "Get latest patch release, for Major 0 and Minor 4" ,
641
664
field : field {
642
- providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/latest /path" , clusterctlv1 .CoreProviderType ),
665
+ providerConfig : config .NewProvider ("test" , "https://github.com/o/r1/releases/v0.4.0 /path" , clusterctlv1 .CoreProviderType ),
643
666
},
644
667
major : & major0 ,
645
668
minor : & minor4 ,
0 commit comments