mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-26 07:16:44 +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();
 | |
|   });
 | |
| });
 |