mirror of
				https://kkgithub.com/actions/setup-node.git
				synced 2025-11-04 12:46:16 +08:00 
			
		
		
		
	* add support for ghes caching * fix licesnses * work on resolving comments * change internal error to warning * fix warning for internal errors * update version
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import * as core from '@actions/core';
 | 
						|
import * as cache from '@actions/cache';
 | 
						|
import path from 'path';
 | 
						|
import * as utils from '../src/cache-utils';
 | 
						|
import {PackageManagerInfo, isCacheFeatureAvailable} from '../src/cache-utils';
 | 
						|
 | 
						|
describe('cache-utils', () => {
 | 
						|
  const versionYarn1 = '1.2.3';
 | 
						|
 | 
						|
  let debugSpy: jest.SpyInstance;
 | 
						|
  let getCommandOutputSpy: jest.SpyInstance;
 | 
						|
  let isFeatureAvailable: jest.SpyInstance;
 | 
						|
  let info: jest.SpyInstance;
 | 
						|
  let warningSpy: jest.SpyInstance;
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
 | 
						|
    debugSpy = jest.spyOn(core, 'debug');
 | 
						|
    debugSpy.mockImplementation(msg => {});
 | 
						|
 | 
						|
    info = jest.spyOn(core, 'info');
 | 
						|
    warningSpy = jest.spyOn(core, 'warning');
 | 
						|
 | 
						|
    isFeatureAvailable = jest.spyOn(cache, 'isFeatureAvailable');
 | 
						|
 | 
						|
    getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput');
 | 
						|
  });
 | 
						|
 | 
						|
  describe('getPackageManagerInfo', () => {
 | 
						|
    it.each<[string, PackageManagerInfo | null]>([
 | 
						|
      ['npm', utils.supportedPackageManagers.npm],
 | 
						|
      ['pnpm', utils.supportedPackageManagers.pnpm],
 | 
						|
      ['yarn', utils.supportedPackageManagers.yarn1],
 | 
						|
      ['yarn1', null],
 | 
						|
      ['yarn2', null],
 | 
						|
      ['npm7', null]
 | 
						|
    ])('getPackageManagerInfo for %s is %o', async (packageManager, result) => {
 | 
						|
      getCommandOutputSpy.mockImplementationOnce(() => versionYarn1);
 | 
						|
      await expect(utils.getPackageManagerInfo(packageManager)).resolves.toBe(
 | 
						|
        result
 | 
						|
      );
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  it('isCacheFeatureAvailable for GHES is false', () => {
 | 
						|
    isFeatureAvailable.mockImplementation(() => false);
 | 
						|
    process.env['GITHUB_SERVER_URL'] = 'https://www.test.com';
 | 
						|
 | 
						|
    expect(() => isCacheFeatureAvailable()).toThrowError(
 | 
						|
      'Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.'
 | 
						|
    );
 | 
						|
  });
 | 
						|
 | 
						|
  it('isCacheFeatureAvailable for GHES has an interhal error', () => {
 | 
						|
    isFeatureAvailable.mockImplementation(() => false);
 | 
						|
    process.env['GITHUB_SERVER_URL'] = '';
 | 
						|
    isCacheFeatureAvailable();
 | 
						|
    expect(warningSpy).toHaveBeenCalledWith(
 | 
						|
      'The runner was not able to contact the cache service. Caching will be skipped'
 | 
						|
    );
 | 
						|
  });
 | 
						|
 | 
						|
  it('isCacheFeatureAvailable for GHES is available', () => {
 | 
						|
    isFeatureAvailable.mockImplementation(() => true);
 | 
						|
 | 
						|
    expect(isCacheFeatureAvailable()).toStrictEqual(true);
 | 
						|
  });
 | 
						|
 | 
						|
  afterEach(() => {
 | 
						|
    process.env['GITHUB_SERVER_URL'] = '';
 | 
						|
    jest.resetAllMocks();
 | 
						|
    jest.clearAllMocks();
 | 
						|
  });
 | 
						|
});
 |