Fix sorting in tools.getSemverVersion

This commit is contained in:
Shivam Mathur
2025-09-17 19:06:59 +05:30
parent 06512d94ed
commit 8f8196743c
3 changed files with 17 additions and 5 deletions

View File

@ -62,6 +62,14 @@ jest.mock('../src/fetch', () => ({
return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`}; return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`};
} else if (token === 'beta_token') { } else if (token === 'beta_token') {
return {data: `[{"ref": "refs/tags/1.2.3-beta1", "url": "${url}"}]`}; return {data: `[{"ref": "refs/tags/1.2.3-beta1", "url": "${url}"}]`};
} else if (token === 'undefined_ref') {
return {
data: `[{"url":"${url}"},{"ref":"refs/tags/v1.2.4","url":"${url}"}]`
};
} else if (token === 'multi_refs') {
return {
data: `[{"ref":"refs/tags/v1.2.3","url":"${url}"},{"ref":"refs/tags/1.2.4","url":"${url}"}]`
};
} else if (token === 'no_data') { } else if (token === 'no_data') {
return {data: '[]'}; return {data: '[]'};
} else { } else {
@ -93,6 +101,8 @@ describe('Tools tests', () => {
${'invalid_token'} | ${'1.2'} ${'invalid_token'} | ${'1.2'}
${'valid_token'} | ${'1.2.3'} ${'valid_token'} | ${'1.2.3'}
${'beta_token'} | ${'1.2.3-beta1'} ${'beta_token'} | ${'1.2.3-beta1'}
${'undefined_ref'} | ${'1.2.4'}
${'multi_refs'} | ${'1.2.4'}
${''} | ${'1.2.3'} ${''} | ${'1.2.3'}
`('checking getSemverVersion: $token', async ({token, version}) => { `('checking getSemverVersion: $token', async ({token, version}) => {
process.env['GITHUB_TOKEN'] = token; process.env['GITHUB_TOKEN'] = token;

2
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,6 @@
import path from 'path'; import path from 'path';
import fs from 'fs'; import fs from 'fs';
import * as cv from 'compare-versions';
import * as fetch from './fetch'; import * as fetch from './fetch';
import * as packagist from './packagist'; import * as packagist from './packagist';
import * as utils from './utils'; import * as utils from './utils';
@ -30,10 +31,11 @@ export async function getSemverVersion(data: RS): Promise<string> {
data['error'] = response.error ?? `No version found with prefix ${search}.`; data['error'] = response.error ?? `No version found with prefix ${search}.`;
return data['version']; return data['version'];
} else { } else {
const refs = JSON.parse(response['data']).reverse(); const refs: IRef[] = JSON.parse(response['data']);
const ref = refs.find((i: IRef) => /.*\d+.\d+.\d+$/.test(i['ref'])); const tags = refs
const tag: string = (ref || refs[0])['ref'].split('/').pop(); .map((i: IRef) => (i.ref?.split('/').pop() ?? '').replace(/^v(?=\d)/, ''))
return tag.replace(/^v(\d)/, '$1'); .filter((t: string) => t.length > 0);
return tags.sort((a: string, b: string) => cv.compareVersions(b, a))[0];
} }
} }