From 2fb803baf31692b82860192cd742da42da1569ca Mon Sep 17 00:00:00 2001 From: Hargun Kaur <56452820+hkaur008@users.noreply.github.com> Date: Mon, 4 Oct 2021 23:00:00 +0000 Subject: [PATCH] refactored installer.test.ts --- __tests__/installer.test.ts | 90 ++++++++++++++++++++++++++++- __tests__/node-version-file.test.ts | 14 ++--- src/installer.ts | 10 ++-- 3 files changed, 101 insertions(+), 13 deletions(-) diff --git a/__tests__/installer.test.ts b/__tests__/installer.test.ts index 1b10c6e7..f921c133 100644 --- a/__tests__/installer.test.ts +++ b/__tests__/installer.test.ts @@ -9,6 +9,9 @@ import * as main from '../src/main'; import * as auth from '../src/authutil'; let nodeTestManifest = require('./data/versions-manifest.json'); let nodeTestDist = require('./data/node-dist-index.json'); +import * as nv from '../src/installer'; + + describe('setup-node', () => { let inputs = {} as any; @@ -58,7 +61,7 @@ describe('setup-node', () => { cacheSpy = jest.spyOn(tc, 'cacheDir'); getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo'); getDistSpy = jest.spyOn(nv, 'getVersionsFromDist'); - parseNodeVersionSpy = jest.spyOn(nvf, 'parseNodeVersionFile'); + parseNodeVersionSpy = jest.spyOn(nv, 'parseNodeVersionFile'); // io whichSpy = jest.spyOn(io, 'which'); @@ -814,4 +817,89 @@ describe('setup-node', () => { }); }); }); + +describe('node-version-file', () => { + let getVersionsFromDist: jest.SpyInstance; + + beforeEach(() => { + // @actions/core + console.log('::stop-commands::stoptoken'); // Disable executing of runner commands when running tests in actions + + getVersionsFromDist = jest.spyOn(nv, 'getVersionsFromDist'); + + // gets + getVersionsFromDist.mockImplementation(() => nodeTestDist); + }); + + afterEach(() => { + jest.resetAllMocks(); + jest.clearAllMocks(); + //jest.restoreAllMocks(); + }); + + afterAll(async () => { + console.log('::stoptoken::'); // Re-enable executing of runner commands when running tests in actions + }, 100000); + + //-------------------------------------------------- + // Manifest find tests + //-------------------------------------------------- + describe('parseNodeVersionFile', () => { + it('without `v` prefix', async () => { + // Arrange + const versionSpec = '12'; + + // Act + const result = await nv.parseNodeVersionFile(versionSpec); + + // Assert + expect(result).toBe(versionSpec); + }); + + it('lts/*', async () => { + // Arrange + const versionSpec = 'lts/*'; + + // Act + const result = await nv.parseNodeVersionFile(versionSpec); + + // Assert + expect(result).toMatch(/^\d+\.\d+\.\d+$/); + }); + + it('lts/erbium', async () => { + // Arrange + const versionSpec = 'lts/*'; + + // Act + const result = await nv.parseNodeVersionFile(versionSpec); + + // Assert + expect(result).toMatch(/\d\.\d\.\d/); + }); + + it('partial syntax like 12', async () => { + // Arrange + const versionSpec = '12'; + + // Act + const result = await nv.parseNodeVersionFile(versionSpec); + + // Assert + expect(result).toBe(versionSpec); + }); + + it('partial syntax like 12.16', async () => { + // Arrange + const versionSpec = '12.16'; + + // Act + const result = await nv.parseNodeVersionFile(versionSpec); + + // Assert + expect(result).toBe(versionSpec); + }); + }); +}); + }); diff --git a/__tests__/node-version-file.test.ts b/__tests__/node-version-file.test.ts index fd1d8b88..224d8019 100644 --- a/__tests__/node-version-file.test.ts +++ b/__tests__/node-version-file.test.ts @@ -1,5 +1,5 @@ -import * as nv from '../src/node-version'; -import * as nvf from '../src/node-version-file'; +import * as nv from '../src/installer'; + let nodeTestDist = require('./data/node-dist-index.json'); @@ -35,7 +35,7 @@ describe('node-version-file', () => { const versionSpec = '12'; // Act - const result = await nvf.parseNodeVersionFile(versionSpec); + const result = await nv.parseNodeVersionFile(versionSpec); // Assert expect(result).toBe(versionSpec); @@ -46,7 +46,7 @@ describe('node-version-file', () => { const versionSpec = 'lts/*'; // Act - const result = await nvf.parseNodeVersionFile(versionSpec); + const result = await nv.parseNodeVersionFile(versionSpec); // Assert expect(result).toMatch(/^\d+\.\d+\.\d+$/); @@ -57,7 +57,7 @@ describe('node-version-file', () => { const versionSpec = 'lts/*'; // Act - const result = await nvf.parseNodeVersionFile(versionSpec); + const result = await nv.parseNodeVersionFile(versionSpec); // Assert expect(result).toMatch(/\d\.\d\.\d/); @@ -68,7 +68,7 @@ describe('node-version-file', () => { const versionSpec = '12'; // Act - const result = await nvf.parseNodeVersionFile(versionSpec); + const result = await nv.parseNodeVersionFile(versionSpec); // Assert expect(result).toBe(versionSpec); @@ -79,7 +79,7 @@ describe('node-version-file', () => { const versionSpec = '12.16'; // Act - const result = await nvf.parseNodeVersionFile(versionSpec); + const result = await nv.parseNodeVersionFile(versionSpec); // Assert expect(result).toBe(versionSpec); diff --git a/src/installer.ts b/src/installer.ts index 2f1a8ffb..f4d79a34 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -10,7 +10,7 @@ import fs = require('fs'); -interface INodeVersion { +export interface INodeVersion { version: string; files: string[]; } @@ -97,7 +97,7 @@ export async function getNode( 'Not found in manifest. Falling back to download directly from Node' ); } - } catch (err) { + } catch (err : any) { // Rate limit? if ( err instanceof tc.HTTPError && @@ -107,7 +107,7 @@ export async function getNode( `Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded` ); } else { - core.info(err.message); + core.info((err).message); } core.debug(err.stack); core.info('Falling back to download directly from Node'); @@ -311,7 +311,7 @@ async function resolveVersionFromManifest( manifest ); return info?.resolvedVersion; - } catch (err) { + } catch (err : any) { core.info('Unable to resolve version from manifest...'); core.debug(err.message); } @@ -383,7 +383,7 @@ async function queryDistForMatch( return version; } -async function getVersionsFromDist(): Promise { +export async function getVersionsFromDist(): Promise { let dataUrl = 'https://nodejs.org/dist/index.json'; let httpClient = new hc.HttpClient('setup-node', [], { allowRetries: true,