mirror of
https://github.com/actions/setup-node.git
synced 2025-04-21 19:18:43 +00:00
refactored installer.test.ts
This commit is contained in:
parent
16506004ff
commit
2fb803baf3
3 changed files with 101 additions and 13 deletions
|
@ -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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue