mirror of
https://github.com/actions/setup-node.git
synced 2025-04-22 09:21:00 +00:00
removed test logic in ParseNodeVersionFile for lts and partial matching
This commit is contained in:
parent
b1ed0c36e7
commit
c178bbba23
4 changed files with 312 additions and 373 deletions
|
@ -1,6 +1,7 @@
|
|||
import * as core from '@actions/core';
|
||||
import * as io from '@actions/io';
|
||||
import * as tc from '@actions/tool-cache';
|
||||
import * as im from '../src/installer';
|
||||
import fs from 'fs';
|
||||
import cp from 'child_process';
|
||||
import osm = require('os');
|
||||
|
@ -9,9 +10,6 @@ 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;
|
||||
|
@ -60,8 +58,8 @@ describe('setup-node', () => {
|
|||
exSpy = jest.spyOn(tc, 'extractTar');
|
||||
cacheSpy = jest.spyOn(tc, 'cacheDir');
|
||||
getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo');
|
||||
getDistSpy = jest.spyOn(nv, 'getVersionsFromDist');
|
||||
parseNodeVersionSpy = jest.spyOn(nv, 'parseNodeVersionFile');
|
||||
getDistSpy = jest.spyOn(im, 'getVersionsFromDist');
|
||||
parseNodeVersionSpy = jest.spyOn(im, 'parseNodeVersionFile');
|
||||
|
||||
// io
|
||||
whichSpy = jest.spyOn(io, 'which');
|
||||
|
@ -77,7 +75,7 @@ describe('setup-node', () => {
|
|||
getManifestSpy.mockImplementation(
|
||||
() => <tc.IToolRelease[]>nodeTestManifest
|
||||
);
|
||||
getDistSpy.mockImplementation(() => <nv.INodeVersion>nodeTestDist);
|
||||
getDistSpy.mockImplementation(() => <im.INodeVersion>nodeTestDist);
|
||||
|
||||
// writes
|
||||
cnSpy = jest.spyOn(process.stdout, 'write');
|
||||
|
@ -122,7 +120,7 @@ describe('setup-node', () => {
|
|||
});
|
||||
|
||||
it('can mock dist versions', async () => {
|
||||
let versions: nv.INodeVersion[] = await nv.getVersionsFromDist();
|
||||
let versions: im.INodeVersion[] = await im.getVersionsFromDist();
|
||||
expect(versions).toBeDefined();
|
||||
expect(versions?.length).toBe(23);
|
||||
});
|
||||
|
@ -577,7 +575,7 @@ describe('setup-node', () => {
|
|||
it('Reads node-version-file if provided', async () => {
|
||||
// Arrange
|
||||
const versionSpec = 'v12';
|
||||
const versionFile = '.nvmrc';
|
||||
const versionFile = '.immrc';
|
||||
const expectedVersionSpec = '12';
|
||||
|
||||
inputs['node-version-file'] = versionFile;
|
||||
|
@ -596,7 +594,8 @@ describe('setup-node', () => {
|
|||
);
|
||||
expect(parseNodeVersionSpy).toHaveBeenCalledWith(versionSpec);
|
||||
expect(logSpy).toHaveBeenCalledWith(
|
||||
`Resolved ${versionFile} as ${expectedVersionSpec}`);
|
||||
`Resolved ${versionFile} as ${expectedVersionSpec}`
|
||||
);
|
||||
});
|
||||
describe('LTS version', () => {
|
||||
beforeEach(() => {
|
||||
|
@ -605,7 +604,6 @@ describe('setup-node', () => {
|
|||
inputs.stable = 'true';
|
||||
});
|
||||
|
||||
|
||||
it('find latest LTS version and resolve it from local cache (lts/erbium)', async () => {
|
||||
// arrange
|
||||
inputs['node-version'] = 'lts/erbium';
|
||||
|
@ -816,19 +814,21 @@ describe('setup-node', () => {
|
|||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('node-version-file', () => {
|
||||
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');
|
||||
getVersionsFromDist = jest.spyOn(im, 'getVersionsFromDist');
|
||||
|
||||
// gets
|
||||
getVersionsFromDist.mockImplementation(() => <nv.INodeVersion>nodeTestDist);
|
||||
getVersionsFromDist.mockImplementation(
|
||||
() => <im.INodeVersion>nodeTestDist
|
||||
);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
|
@ -850,56 +850,11 @@ describe('node-version-file', () => {
|
|||
const versionSpec = '12';
|
||||
|
||||
// Act
|
||||
const result = await nv.parseNodeVersionFile(versionSpec);
|
||||
const result = await im.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);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
|
22
dist/setup/index.js
vendored
22
dist/setup/index.js
vendored
|
@ -65412,28 +65412,14 @@ function translateArchToDistUrl(arch) {
|
|||
}
|
||||
function parseNodeVersionFile(contents) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
contents = contents.trim();
|
||||
if (/^v\d/.test(contents)) {
|
||||
contents = contents.substring(1);
|
||||
let nodeVersion = contents.trim();
|
||||
if (/^v\d/.test(nodeVersion)) {
|
||||
nodeVersion = nodeVersion.substring(1);
|
||||
}
|
||||
const nodeVersions = yield getVersionsFromDist();
|
||||
let nodeVersion;
|
||||
if (semver.valid(contents) || isPartialMatch(contents)) {
|
||||
nodeVersion = contents;
|
||||
}
|
||||
else {
|
||||
throw new Error(`Couldn't resolve node version: '${contents}'`);
|
||||
}
|
||||
return stripVPrefix(nodeVersion);
|
||||
return nodeVersion;
|
||||
});
|
||||
}
|
||||
exports.parseNodeVersionFile = parseNodeVersionFile;
|
||||
function isPartialMatch(version) {
|
||||
return /^\d+(\.\d+(\.\d+)?)?$/.test(version);
|
||||
}
|
||||
function stripVPrefix(version) {
|
||||
return /^v\d/.test(version) ? version.substring(1) : version;
|
||||
}
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
|
|
@ -474,6 +474,3 @@ export async function parseNodeVersionFile(contents: string): Promise<string> {
|
|||
}
|
||||
return nodeVersion;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -46,7 +46,8 @@ export async function run() {
|
|||
if (version) {
|
||||
let token = core.getInput('token');
|
||||
let auth = !token || isGhes() ? undefined : `token ${token}`;
|
||||
let stable = (core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
|
||||
let stable =
|
||||
(core.getInput('stable') || 'true').toUpperCase() === 'TRUE';
|
||||
const checkLatest =
|
||||
(core.getInput('check-latest') || 'false').toUpperCase() === 'TRUE';
|
||||
await installer.getNode(version, stable, checkLatest, auth, arch);
|
||||
|
|
Loading…
Add table
Reference in a new issue