From e8fa6b0ff52715943b021ea2b1d5d46be22bc972 Mon Sep 17 00:00:00 2001 From: Jack Bates Date: Mon, 30 May 2022 15:58:29 -0700 Subject: [PATCH] Don't reverse the manifest --- __tests__/data/versions-manifest.json | 338 ++++++++++++++------------ __tests__/installer.test.ts | 20 +- dist/setup/index.js | 5 +- src/installer.ts | 3 +- 4 files changed, 195 insertions(+), 171 deletions(-) diff --git a/__tests__/data/versions-manifest.json b/__tests__/data/versions-manifest.json index 4cf2ccee..ee4fa7c2 100644 --- a/__tests__/data/versions-manifest.json +++ b/__tests__/data/versions-manifest.json @@ -1,157 +1,183 @@ [ - { - "version": "14.0.0", - "stable": true, - "lts": "Fermium", - "release_url": "https://github.com/actions/node-versions/releases/tag/14.0.0-20200423.30", - "files": [ - { - "filename": "node-14.0.0-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "https://github.com/actions/node-versions/releases/download/14.0.0-20200423.30/node-14.0.0-darwin-x64.tar.gz" - }, - { - "filename": "node-14.0.0-linux-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "download_url": "https://github.com/actions/node-versions/releases/download/14.0.0-20200423.30/node-14.0.0-linux-x64.tar.gz" - }, - { - "filename": "node-14.0.0-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "https://github.com/actions/node-versions/releases/download/14.0.0-20200423.30/node-14.0.0-win32-x64.zip" - } - ] - }, - { - "version": "13.13.0", - "stable": true, - "release_url": "https://github.com/actions/node-versions/releases/tag/13.13.0-20200423.29", - "files": [ - { - "filename": "node-13.13.0-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "https://github.com/actions/node-versions/releases/download/13.13.0-20200423.29/node-13.13.0-darwin-x64.tar.gz" - }, - { - "filename": "node-13.13.0-linux-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "download_url": "https://github.com/actions/node-versions/releases/download/13.13.0-20200423.29/node-13.13.0-linux-x64.tar.gz" - }, - { - "filename": "node-13.13.0-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "https://github.com/actions/node-versions/releases/download/13.13.0-20200423.29/node-13.13.0-win32-x64.zip" - } - ] - }, - { - "version": "12.16.2", - "stable": true, - "lts": "Erbium", - "release_url": "https://github.com/actions/node-versions/releases/tag/12.16.2-20200423.28", - "files": [ - { - "filename": "node-12.16.2-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-darwin-x64.tar.gz" - }, - { - "filename": "node-12.16.2-linux-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "download_url": "https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-linux-x64.tar.gz" - }, - { - "filename": "node-12.16.2-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-win32-x64.zip" - } - ] - }, - { - "version": "10.20.1", - "stable": true, - "lts": "Dubnium", - "release_url": "https://github.com/actions/node-versions/releases/tag/10.20.1-20200423.27", - "files": [ - { - "filename": "node-10.20.1-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "https://github.com/actions/node-versions/releases/download/10.20.1-20200423.27/node-10.20.1-darwin-x64.tar.gz" - }, - { - "filename": "node-10.20.1-linux-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "download_url": "https://github.com/actions/node-versions/releases/download/10.20.1-20200423.27/node-10.20.1-linux-x64.tar.gz" - }, - { - "filename": "node-10.20.1-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "https://github.com/actions/node-versions/releases/download/10.20.1-20200423.27/node-10.20.1-win32-x64.zip" - } - ] - }, - { - "version": "8.17.0", - "stable": true, - "lts": "Carbon", - "release_url": "https://github.com/actions/node-versions/releases/tag/8.17.0-20200423.26", - "files": [ - { - "filename": "node-8.17.0-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "https://github.com/actions/node-versions/releases/download/8.17.0-20200423.26/node-8.17.0-darwin-x64.tar.gz" - }, - { - "filename": "node-8.17.0-linux-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "download_url": "https://github.com/actions/node-versions/releases/download/8.17.0-20200423.26/node-8.17.0-linux-x64.tar.gz" - }, - { - "filename": "node-8.17.0-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "https://github.com/actions/node-versions/releases/download/8.17.0-20200423.26/node-8.17.0-win32-x64.zip" - } - ] - }, - { - "version": "6.17.1", - "stable": true, - "lts": "Boron", - "release_url": "https://github.com/actions/node-versions/releases/tag/6.17.1-20200423.25", - "files": [ - { - "filename": "node-6.17.1-darwin-x64.tar.gz", - "arch": "x64", - "platform": "darwin", - "download_url": "https://github.com/actions/node-versions/releases/download/6.17.1-20200423.25/node-6.17.1-darwin-x64.tar.gz" - }, - { - "filename": "node-6.17.1-linux-x64.tar.gz", - "arch": "x64", - "platform": "linux", - "download_url": "https://github.com/actions/node-versions/releases/download/6.17.1-20200423.25/node-6.17.1-linux-x64.tar.gz" - }, - { - "filename": "node-6.17.1-win32-x64.zip", - "arch": "x64", - "platform": "win32", - "download_url": "https://github.com/actions/node-versions/releases/download/6.17.1-20200423.25/node-6.17.1-win32-x64.zip" - } - ] - } - ] \ No newline at end of file + { + "version": "14.0.0", + "stable": true, + "lts": "Fermium", + "release_url": "https://github.com/actions/node-versions/releases/tag/14.0.0-20200507.99", + "files": [ + { + "filename": "node-14.0.0-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/14.0.0-20200507.99/node-14.0.0-darwin-x64.tar.gz" + }, + { + "filename": "node-14.0.0-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/14.0.0-20200507.99/node-14.0.0-linux-x64.tar.gz" + }, + { + "filename": "node-14.0.0-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/14.0.0-20200507.99/node-14.0.0-win32-x64.7z" + } + ] + }, + { + "version": "13.13.0", + "stable": true, + "release_url": "https://github.com/actions/node-versions/releases/tag/13.13.0-20200507.97", + "files": [ + { + "filename": "node-13.13.0-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/13.13.0-20200507.97/node-13.13.0-darwin-x64.tar.gz" + }, + { + "filename": "node-13.13.0-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/13.13.0-20200507.97/node-13.13.0-linux-x64.tar.gz" + }, + { + "filename": "node-13.13.0-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/13.13.0-20200507.97/node-13.13.0-win32-x64.7z" + } + ] + }, + { + "version": "12.16.2", + "stable": true, + "lts": "Erbium", + "release_url": "https://github.com/actions/node-versions/releases/tag/12.16.2-20200507.95", + "files": [ + { + "filename": "node-12.16.2-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-darwin-x64.tar.gz" + }, + { + "filename": "node-12.16.2-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-linux-x64.tar.gz" + }, + { + "filename": "node-12.16.2-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-win32-x64.7z" + } + ] + }, + { + "version": "12.0.0", + "stable": true, + "lts": "Erbium", + "release_url": "https://github.com/actions/node-versions/releases/tag/12.0.0-20200507.71", + "files": [ + { + "filename": "node-12.0.0-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/12.0.0-20200507.71/node-12.0.0-darwin-x64.tar.gz" + }, + { + "filename": "node-12.0.0-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/12.0.0-20200507.71/node-12.0.0-linux-x64.tar.gz" + }, + { + "filename": "node-12.0.0-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/12.0.0-20200507.71/node-12.0.0-win32-x64.7z" + } + ] + }, + { + "version": "10.20.1", + "stable": true, + "lts": "Dubnium", + "release_url": "https://github.com/actions/node-versions/releases/tag/10.20.1-20200507.70", + "files": [ + { + "filename": "node-10.20.1-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/10.20.1-20200507.70/node-10.20.1-darwin-x64.tar.gz" + }, + { + "filename": "node-10.20.1-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/10.20.1-20200507.70/node-10.20.1-linux-x64.tar.gz" + }, + { + "filename": "node-10.20.1-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/10.20.1-20200507.70/node-10.20.1-win32-x64.7z" + } + ] + }, + { + "version": "8.17.0", + "stable": true, + "lts": "Carbon", + "release_url": "https://github.com/actions/node-versions/releases/tag/8.17.0-20200507.37", + "files": [ + { + "filename": "node-8.17.0-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/8.17.0-20200507.37/node-8.17.0-darwin-x64.tar.gz" + }, + { + "filename": "node-8.17.0-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/8.17.0-20200507.37/node-8.17.0-linux-x64.tar.gz" + }, + { + "filename": "node-8.17.0-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/8.17.0-20200507.37/node-8.17.0-win32-x64.7z" + } + ] + }, + { + "version": "6.17.1", + "stable": true, + "lts": "Boron", + "release_url": "https://github.com/actions/node-versions/releases/tag/6.17.1-20200529.2", + "files": [ + { + "filename": "node-6.17.1-darwin-x64.tar.gz", + "arch": "x64", + "platform": "darwin", + "download_url": "https://github.com/actions/node-versions/releases/download/6.17.1-20200529.2/node-6.17.1-darwin-x64.tar.gz" + }, + { + "filename": "node-6.17.1-linux-x64.tar.gz", + "arch": "x64", + "platform": "linux", + "download_url": "https://github.com/actions/node-versions/releases/download/6.17.1-20200529.2/node-6.17.1-linux-x64.tar.gz" + }, + { + "filename": "node-6.17.1-win32-x64.7z", + "arch": "x64", + "platform": "win32", + "download_url": "https://github.com/actions/node-versions/releases/download/6.17.1-20200529.2/node-6.17.1-win32-x64.7z" + } + ] + } +] diff --git a/__tests__/installer.test.ts b/__tests__/installer.test.ts index 2a4a0282..5a3ad553 100644 --- a/__tests__/installer.test.ts +++ b/__tests__/installer.test.ts @@ -77,9 +77,9 @@ describe('setup-node', () => { authSpy.mockImplementation(() => {}); // gets - getManifestSpy.mockImplementation(() => [ - ...(nodeTestManifest) - ]); + getManifestSpy.mockImplementation( + () => nodeTestManifest + ); getDistSpy.mockImplementation(() => nodeTestDist); // writes @@ -126,7 +126,7 @@ describe('setup-node', () => { 'mocktoken' ); expect(versions).toBeDefined(); - expect(versions?.length).toBe(6); + expect(versions?.length).toBe(7); }); it('can mock dist versions', async () => { @@ -228,7 +228,7 @@ describe('setup-node', () => { inputs['token'] = 'faketoken'; let expectedUrl = - 'https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-linux-x64.tar.gz'; + 'https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-linux-x64.tar.gz'; // ... but not in the local cache findSpy.mockImplementation(() => ''); @@ -266,7 +266,7 @@ describe('setup-node', () => { inputs['token'] = 'faketoken'; let expectedUrl = - 'https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-linux-x64.tar.gz'; + 'https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-linux-x64.tar.gz'; // ... but not in the local cache findSpy.mockImplementation(() => ''); @@ -435,7 +435,7 @@ describe('setup-node', () => { exSpy.mockImplementation(async () => '/some/other/temp/path'); cacheSpy.mockImplementation(async () => toolPath); const expectedUrl = - 'https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-linux-x64.tar.gz'; + 'https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-linux-x64.tar.gz'; await main.run(); @@ -718,17 +718,17 @@ describe('setup-node', () => { [ 'erbium', '12.16.2', - 'https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-linux-x64.tar.gz' + 'https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-linux-x64.tar.gz' ], [ '*', '14.0.0', - 'https://github.com/actions/node-versions/releases/download/14.0.0-20200423.30/node-14.0.0-linux-x64.tar.gz' + 'https://github.com/actions/node-versions/releases/download/14.0.0-20200507.99/node-14.0.0-linux-x64.tar.gz' ], [ '-1', '12.16.2', - 'https://github.com/actions/node-versions/releases/download/12.16.2-20200423.28/node-12.16.2-linux-x64.tar.gz' + 'https://github.com/actions/node-versions/releases/download/12.16.2-20200507.95/node-12.16.2-linux-x64.tar.gz' ] ])( 'find latest LTS version and install it from manifest (lts/%s)', diff --git a/dist/setup/index.js b/dist/setup/index.js index e5523320..7ce48af5 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -70626,8 +70626,6 @@ function getNode(versionSpec, stable, checkLatest, auth, arch = os.arch()) { core.info('Attempt to resolve LTS alias from manifest...'); // No try-catch since it's not possible to resolve LTS alias without manifest manifest = yield getManifest(auth); - // Reverse it so later Object.fromEntries() gets the latest version of each LTS - manifest.reverse(); versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest); } if (isLatestSyntax(versionSpec)) { @@ -70762,7 +70760,8 @@ function resolveLtsAliasFromManifest(versionSpec, stable, manifest) { const n = Number(alias); const aliases = Object.fromEntries(manifest .filter(x => x.lts && x.stable === stable) - .map(x => [x.lts.toLowerCase(), x])); + .map(x => [x.lts.toLowerCase(), x]) + .reverse()); const numbered = Object.values(aliases); const release = alias === '*' ? numbered[numbered.length - 1] diff --git a/src/installer.ts b/src/installer.ts index 92febe88..97e3bcae 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -46,8 +46,6 @@ export async function getNode( // No try-catch since it's not possible to resolve LTS alias without manifest manifest = await getManifest(auth); - // Reverse it so later Object.fromEntries() gets the latest version of each LTS - manifest.reverse(); versionSpec = resolveLtsAliasFromManifest(versionSpec, stable, manifest); } @@ -231,6 +229,7 @@ function resolveLtsAliasFromManifest( manifest .filter(x => x.lts && x.stable === stable) .map(x => [x.lts!.toLowerCase(), x]) + .reverse() ); const numbered = Object.values(aliases); const release =