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