refactored installer.test.ts

This commit is contained in:
Hargun Kaur 2021-10-04 23:00:00 +00:00 committed by GitHub
parent 16506004ff
commit 2fb803baf3
3 changed files with 101 additions and 13 deletions

View file

@ -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(() => <nv.INodeVersion>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);
});
});
});
});

View file

@ -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);

View file

@ -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<INodeVersion[]> {
export async function getVersionsFromDist(): Promise<INodeVersion[]> {
let dataUrl = 'https://nodejs.org/dist/index.json';
let httpClient = new hc.HttpClient('setup-node', [], {
allowRetries: true,