mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 07:33:34 +00:00 
			
		
		
		
	refactored installer.test.ts
This commit is contained in:
		
							parent
							
								
									16506004ff
								
							
						
					
					
						commit
						2fb803baf3
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user