mirror of
https://github.com/actions/setup-node.git
synced 2025-04-23 20:10:48 +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';
|
import * as auth from '../src/authutil';
|
||||||
let nodeTestManifest = require('./data/versions-manifest.json');
|
let nodeTestManifest = require('./data/versions-manifest.json');
|
||||||
let nodeTestDist = require('./data/node-dist-index.json');
|
let nodeTestDist = require('./data/node-dist-index.json');
|
||||||
|
import * as nv from '../src/installer';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe('setup-node', () => {
|
describe('setup-node', () => {
|
||||||
let inputs = {} as any;
|
let inputs = {} as any;
|
||||||
|
@ -58,7 +61,7 @@ describe('setup-node', () => {
|
||||||
cacheSpy = jest.spyOn(tc, 'cacheDir');
|
cacheSpy = jest.spyOn(tc, 'cacheDir');
|
||||||
getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo');
|
getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo');
|
||||||
getDistSpy = jest.spyOn(nv, 'getVersionsFromDist');
|
getDistSpy = jest.spyOn(nv, 'getVersionsFromDist');
|
||||||
parseNodeVersionSpy = jest.spyOn(nvf, 'parseNodeVersionFile');
|
parseNodeVersionSpy = jest.spyOn(nv, 'parseNodeVersionFile');
|
||||||
|
|
||||||
// io
|
// io
|
||||||
whichSpy = jest.spyOn(io, 'which');
|
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 nv from '../src/installer';
|
||||||
import * as nvf from '../src/node-version-file';
|
|
||||||
|
|
||||||
let nodeTestDist = require('./data/node-dist-index.json');
|
let nodeTestDist = require('./data/node-dist-index.json');
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ describe('node-version-file', () => {
|
||||||
const versionSpec = '12';
|
const versionSpec = '12';
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const result = await nvf.parseNodeVersionFile(versionSpec);
|
const result = await nv.parseNodeVersionFile(versionSpec);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(result).toBe(versionSpec);
|
expect(result).toBe(versionSpec);
|
||||||
|
@ -46,7 +46,7 @@ describe('node-version-file', () => {
|
||||||
const versionSpec = 'lts/*';
|
const versionSpec = 'lts/*';
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const result = await nvf.parseNodeVersionFile(versionSpec);
|
const result = await nv.parseNodeVersionFile(versionSpec);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(result).toMatch(/^\d+\.\d+\.\d+$/);
|
expect(result).toMatch(/^\d+\.\d+\.\d+$/);
|
||||||
|
@ -57,7 +57,7 @@ describe('node-version-file', () => {
|
||||||
const versionSpec = 'lts/*';
|
const versionSpec = 'lts/*';
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const result = await nvf.parseNodeVersionFile(versionSpec);
|
const result = await nv.parseNodeVersionFile(versionSpec);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(result).toMatch(/\d\.\d\.\d/);
|
expect(result).toMatch(/\d\.\d\.\d/);
|
||||||
|
@ -68,7 +68,7 @@ describe('node-version-file', () => {
|
||||||
const versionSpec = '12';
|
const versionSpec = '12';
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const result = await nvf.parseNodeVersionFile(versionSpec);
|
const result = await nv.parseNodeVersionFile(versionSpec);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(result).toBe(versionSpec);
|
expect(result).toBe(versionSpec);
|
||||||
|
@ -79,7 +79,7 @@ describe('node-version-file', () => {
|
||||||
const versionSpec = '12.16';
|
const versionSpec = '12.16';
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const result = await nvf.parseNodeVersionFile(versionSpec);
|
const result = await nv.parseNodeVersionFile(versionSpec);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
expect(result).toBe(versionSpec);
|
expect(result).toBe(versionSpec);
|
||||||
|
|
|
@ -10,7 +10,7 @@ import fs = require('fs');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
interface INodeVersion {
|
export interface INodeVersion {
|
||||||
version: string;
|
version: string;
|
||||||
files: string[];
|
files: string[];
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ export async function getNode(
|
||||||
'Not found in manifest. Falling back to download directly from Node'
|
'Not found in manifest. Falling back to download directly from Node'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err : any) {
|
||||||
// Rate limit?
|
// Rate limit?
|
||||||
if (
|
if (
|
||||||
err instanceof tc.HTTPError &&
|
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`
|
`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
core.info(err.message);
|
core.info((err).message);
|
||||||
}
|
}
|
||||||
core.debug(err.stack);
|
core.debug(err.stack);
|
||||||
core.info('Falling back to download directly from Node');
|
core.info('Falling back to download directly from Node');
|
||||||
|
@ -311,7 +311,7 @@ async function resolveVersionFromManifest(
|
||||||
manifest
|
manifest
|
||||||
);
|
);
|
||||||
return info?.resolvedVersion;
|
return info?.resolvedVersion;
|
||||||
} catch (err) {
|
} catch (err : any) {
|
||||||
core.info('Unable to resolve version from manifest...');
|
core.info('Unable to resolve version from manifest...');
|
||||||
core.debug(err.message);
|
core.debug(err.message);
|
||||||
}
|
}
|
||||||
|
@ -383,7 +383,7 @@ async function queryDistForMatch(
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getVersionsFromDist(): Promise<INodeVersion[]> {
|
export async function getVersionsFromDist(): Promise<INodeVersion[]> {
|
||||||
let dataUrl = 'https://nodejs.org/dist/index.json';
|
let dataUrl = 'https://nodejs.org/dist/index.json';
|
||||||
let httpClient = new hc.HttpClient('setup-node', [], {
|
let httpClient = new hc.HttpClient('setup-node', [], {
|
||||||
allowRetries: true,
|
allowRetries: true,
|
||||||
|
|
Loading…
Add table
Reference in a new issue