Skip to content

Commit 8f81967

Browse files
committed
Fix sorting in tools.getSemverVersion
1 parent 06512d9 commit 8f81967

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

__tests__/tools.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ jest.mock('../src/fetch', () => ({
6262
return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`};
6363
} else if (token === 'beta_token') {
6464
return {data: `[{"ref": "refs/tags/1.2.3-beta1", "url": "${url}"}]`};
65+
} else if (token === 'undefined_ref') {
66+
return {
67+
data: `[{"url":"${url}"},{"ref":"refs/tags/v1.2.4","url":"${url}"}]`
68+
};
69+
} else if (token === 'multi_refs') {
70+
return {
71+
data: `[{"ref":"refs/tags/v1.2.3","url":"${url}"},{"ref":"refs/tags/1.2.4","url":"${url}"}]`
72+
};
6573
} else if (token === 'no_data') {
6674
return {data: '[]'};
6775
} else {
@@ -93,6 +101,8 @@ describe('Tools tests', () => {
93101
${'invalid_token'} | ${'1.2'}
94102
${'valid_token'} | ${'1.2.3'}
95103
${'beta_token'} | ${'1.2.3-beta1'}
104+
${'undefined_ref'} | ${'1.2.4'}
105+
${'multi_refs'} | ${'1.2.4'}
96106
${''} | ${'1.2.3'}
97107
`('checking getSemverVersion: $token', async ({token, version}) => {
98108
process.env['GITHUB_TOKEN'] = token;

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/tools.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import path from 'path';
22
import fs from 'fs';
3+
import * as cv from 'compare-versions';
34
import * as fetch from './fetch';
45
import * as packagist from './packagist';
56
import * as utils from './utils';
@@ -30,10 +31,11 @@ export async function getSemverVersion(data: RS): Promise<string> {
3031
data['error'] = response.error ?? `No version found with prefix ${search}.`;
3132
return data['version'];
3233
} else {
33-
const refs = JSON.parse(response['data']).reverse();
34-
const ref = refs.find((i: IRef) => /.*\d+.\d+.\d+$/.test(i['ref']));
35-
const tag: string = (ref || refs[0])['ref'].split('/').pop();
36-
return tag.replace(/^v(\d)/, '$1');
34+
const refs: IRef[] = JSON.parse(response['data']);
35+
const tags = refs
36+
.map((i: IRef) => (i.ref?.split('/').pop() ?? '').replace(/^v(?=\d)/, ''))
37+
.filter((t: string) => t.length > 0);
38+
return tags.sort((a: string, b: string) => cv.compareVersions(b, a))[0];
3739
}
3840
}
3941

0 commit comments

Comments
 (0)