@@ -85,6 +85,15 @@ describe("Releases API consumer", () => {
8585 prerelease : true ,
8686 tag_name : "v3.1.2-pre-2.0" ,
8787 } ,
88+ // Has a tag_name that is not valid semver
89+ {
90+ assets : [ ] ,
91+ created_at : "2019-08-010T00:00:00Z" ,
92+ id : 6 ,
93+ name : "" ,
94+ prerelease : true ,
95+ tag_name : "codeql-bundle-20231220" ,
96+ } ,
8897 ] ;
8998
9099 class MockReleasesApiConsumer extends ReleasesApiConsumer {
@@ -98,15 +107,26 @@ describe("Releases API consumer", () => {
98107 }
99108 }
100109
101- it ( "picked release has version with the highest precedence " , async ( ) => {
110+ it ( "picked release is non-prerelease with with the highest semver " , async ( ) => {
102111 const consumer = new MockReleasesApiConsumer ( owner , repo ) ;
103112
104113 const latestRelease = await consumer . getLatestRelease (
105114 unconstrainedVersionRange ,
115+ true ,
106116 ) ;
107117 expect ( latestRelease . id ) . toBe ( 2 ) ;
108118 } ) ;
109119
120+ it ( "picked release is non-prerelease with highest id" , async ( ) => {
121+ const consumer = new MockReleasesApiConsumer ( owner , repo ) ;
122+
123+ const latestRelease = await consumer . getLatestRelease (
124+ unconstrainedVersionRange ,
125+ false ,
126+ ) ;
127+ expect ( latestRelease . id ) . toBe ( 3 ) ;
128+ } ) ;
129+
110130 it ( "version of picked release is within the version range" , async ( ) => {
111131 const consumer = new MockReleasesApiConsumer ( owner , repo ) ;
112132
@@ -157,6 +177,17 @@ describe("Releases API consumer", () => {
157177 ) ;
158178 expect ( latestRelease . id ) . toBe ( 5 ) ;
159179 } ) ;
180+
181+ it ( "ignores invalid semver and picks (pre-)release with highest id" , async ( ) => {
182+ const consumer = new MockReleasesApiConsumer ( owner , repo ) ;
183+
184+ const latestRelease = await consumer . getLatestRelease (
185+ undefined ,
186+ false ,
187+ true ,
188+ ) ;
189+ expect ( latestRelease . id ) . toBe ( 6 ) ;
190+ } ) ;
160191 } ) ;
161192
162193 it ( "gets correct assets for a release" , async ( ) => {
0 commit comments