diff --git a/__tests__/tools.test.ts b/__tests__/tools.test.ts index 6ab0c685..d6002947 100644 --- a/__tests__/tools.test.ts +++ b/__tests__/tools.test.ts @@ -42,12 +42,14 @@ jest .spyOn(utils, 'fetch') .mockImplementation( async (url: string, token?: string): Promise> => { - if (url.includes('atom') && !url.includes('no-release')) { + if (url.includes('atom') && !url.includes('no-')) { return { 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')) { - return {data: ''}; + return {data: 'no-release'}; } else if (!token || token === 'valid_token') { return {data: `[{"ref": "refs/tags/1.2.3", "url": "${url}"}]`}; } else if (token === 'beta_token') { @@ -77,6 +79,7 @@ describe('Tools tests', () => { it.each` tool | fetch_latest | version ${'tool'} | ${'true'} | ${'3.2.1'} + ${'tool-no-data'} | ${'true'} | ${'latest'} ${'tool-no-release'} | ${'true'} | ${'latest'} ${'tool'} | ${'false'} | ${'latest'} `( diff --git a/dist/index.js b/dist/index.js index be1868ce..c61687e0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -548,12 +548,15 @@ async function getLatestVersion(data) { return 'latest'; } const resp = await utils.fetch(`${data['github']}/${data['repository']}/releases.atom`); - const releases = [ - ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g) - ].map(match => match[2]); - return (releases - .sort((a, b) => a.localeCompare(b, undefined, { numeric: true })) - .pop() || 'latest'); + if (resp['data']) { + const releases = [ + ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g) + ].map(match => match[2]); + return (releases + .sort((a, b) => a.localeCompare(b, undefined, { numeric: true })) + .pop() || 'latest'); + } + return 'latest'; } exports.getLatestVersion = getLatestVersion; async function getVersion(version, data) { diff --git a/src/tools.ts b/src/tools.ts index fd8de882..8b040f5f 100644 --- a/src/tools.ts +++ b/src/tools.ts @@ -43,17 +43,20 @@ export async function getLatestVersion(data: RS): Promise { const resp: Record = await utils.fetch( `${data['github']}/${data['repository']}/releases.atom` ); - const releases: string[] = [ - ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g) - ].map(match => match[2]); + if (resp['data']) { + const releases: string[] = [ + ...resp['data'].matchAll(/releases\/tag\/([a-zA-Z]*)?(\d+.\d+.\d+)"/g) + ].map(match => match[2]); - return ( - releases - .sort((a: string, b: string) => - a.localeCompare(b, undefined, {numeric: true}) - ) - .pop() || 'latest' - ); + return ( + releases + .sort((a: string, b: string) => + a.localeCompare(b, undefined, {numeric: true}) + ) + .pop() || 'latest' + ); + } + return 'latest'; } /**