Fix tools.getLatestVersion

This commit is contained in:
Shivam Mathur 2022-01-27 08:44:53 +05:30
parent 0a601ebeee
commit 1db2ec93f3
No known key found for this signature in database
GPG Key ID: 3E13E4C8591ACC2A
3 changed files with 27 additions and 18 deletions

View File

@ -42,12 +42,14 @@ jest
.spyOn(utils, 'fetch') .spyOn(utils, 'fetch')
.mockImplementation( .mockImplementation(
async (url: string, token?: string): Promise<Record<string, string>> => { async (url: string, token?: string): Promise<Record<string, string>> => {
if (url.includes('atom') && !url.includes('no-release')) { if (url.includes('atom') && !url.includes('no-')) {
return { return {
data: '"releases/tag/1.2.3", "releases/tag/3.2.1", "releases/tag/2.3.1"' data: '"releases/tag/1.2.3", "releases/tag/3.2.1", "releases/tag/2.3.1"'
}; };
} else if (url.includes('no-data')) {
return {};
} else if (url.includes('no-release')) { } else if (url.includes('no-release')) {
return {data: ''}; return {data: 'no-release'};
} else if (!token || token === 'valid_token') { } else if (!token || token === 'valid_token') {
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') {
@ -77,6 +79,7 @@ describe('Tools tests', () => {
it.each` it.each`
tool | fetch_latest | version tool | fetch_latest | version
${'tool'} | ${'true'} | ${'3.2.1'} ${'tool'} | ${'true'} | ${'3.2.1'}
${'tool-no-data'} | ${'true'} | ${'latest'}
${'tool-no-release'} | ${'true'} | ${'latest'} ${'tool-no-release'} | ${'true'} | ${'latest'}
${'tool'} | ${'false'} | ${'latest'} ${'tool'} | ${'false'} | ${'latest'}
`( `(

15
dist/index.js vendored
View File

@ -548,12 +548,15 @@ async function getLatestVersion(data) {
return 'latest'; return 'latest';
} }
const resp = await utils.fetch(`${data['github']}/${data['repository']}/releases.atom`); const resp = await utils.fetch(`${data['github']}/${data['repository']}/releases.atom`);
const releases = [ if (resp['data']) {
...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g) const releases = [
].map(match => match[2]); ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g)
return (releases ].map(match => match[2]);
.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })) return (releases
.pop() || 'latest'); .sort((a, b) => a.localeCompare(b, undefined, { numeric: true }))
.pop() || 'latest');
}
return 'latest';
} }
exports.getLatestVersion = getLatestVersion; exports.getLatestVersion = getLatestVersion;
async function getVersion(version, data) { async function getVersion(version, data) {

View File

@ -43,17 +43,20 @@ export async function getLatestVersion(data: RS): Promise<string> {
const resp: Record<string, string> = await utils.fetch( const resp: Record<string, string> = await utils.fetch(
`${data['github']}/${data['repository']}/releases.atom` `${data['github']}/${data['repository']}/releases.atom`
); );
const releases: string[] = [ if (resp['data']) {
...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g) const releases: string[] = [
].map(match => match[2]); ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g)
].map(match => match[2]);
return ( return (
releases releases
.sort((a: string, b: string) => .sort((a: string, b: string) =>
a.localeCompare(b, undefined, {numeric: true}) a.localeCompare(b, undefined, {numeric: true})
) )
.pop() || 'latest' .pop() || 'latest'
); );
}
return 'latest';
} }
/** /**