mirror of https://github.com/actions/setup-go.git
				
				
				
			
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| import fs from 'fs';
 | |
| import * as io from '@actions/io';
 | |
| import * as tc from '@actions/tool-cache';
 | |
| import path from 'path';
 | |
| 
 | |
| describe('Windows performance workaround', () => {
 | |
|   let mkdirSpy: jest.SpyInstance;
 | |
|   let symlinkSpy: jest.SpyInstance;
 | |
|   let statSpy: jest.SpyInstance;
 | |
|   let readdirSpy: jest.SpyInstance;
 | |
|   let writeFileSpy: jest.SpyInstance;
 | |
|   let rmRFSpy: jest.SpyInstance;
 | |
|   let mkdirPSpy: jest.SpyInstance;
 | |
|   let cpSpy: jest.SpyInstance;
 | |
| 
 | |
|   let runnerToolCache: string | undefined;
 | |
|   beforeEach(() => {
 | |
|     mkdirSpy = jest.spyOn(fs, 'mkdir');
 | |
|     symlinkSpy = jest.spyOn(fs, 'symlinkSync');
 | |
|     statSpy = jest.spyOn(fs, 'statSync');
 | |
|     readdirSpy = jest.spyOn(fs, 'readdirSync');
 | |
|     writeFileSpy = jest.spyOn(fs, 'writeFileSync');
 | |
|     rmRFSpy = jest.spyOn(io, 'rmRF');
 | |
|     mkdirPSpy = jest.spyOn(io, 'mkdirP');
 | |
|     cpSpy = jest.spyOn(io, 'cp');
 | |
| 
 | |
|     // default implementations
 | |
|     // @ts-ignore - not implement unused methods
 | |
|     statSpy.mockImplementation(() => ({
 | |
|       isDirectory: () => true
 | |
|     }));
 | |
|     readdirSpy.mockImplementation(() => []);
 | |
|     writeFileSpy.mockImplementation(() => {});
 | |
|     mkdirSpy.mockImplementation(() => {});
 | |
|     symlinkSpy.mockImplementation(() => {});
 | |
|     rmRFSpy.mockImplementation(() => Promise.resolve());
 | |
|     mkdirPSpy.mockImplementation(() => Promise.resolve());
 | |
|     cpSpy.mockImplementation(() => Promise.resolve());
 | |
| 
 | |
|     runnerToolCache = process.env['RUNNER_TOOL_CACHE'];
 | |
|   });
 | |
|   afterEach(() => {
 | |
|     jest.clearAllMocks();
 | |
|     process.env['RUNNER_TOOL_CACHE'] = runnerToolCache;
 | |
|   });
 | |
|   // cacheWindowsToolkitDir depends on implementation of tc.cacheDir
 | |
|   // with the assumption that target dir is passed by RUNNER_TOOL_CACHE environment variable
 | |
|   // Make sure the implementation has not been changed
 | |
|   it('addExecutablesToCache should depend on env[RUNNER_TOOL_CACHE]', async () => {
 | |
|     process.env['RUNNER_TOOL_CACHE'] = '/faked-hostedtoolcache1';
 | |
|     const cacheDir1 = await tc.cacheDir('/qzx', 'go', '1.2.3', 'arch');
 | |
|     expect(cacheDir1).toBe(
 | |
|       path.join('/', 'faked-hostedtoolcache1', 'go', '1.2.3', 'arch')
 | |
|     );
 | |
| 
 | |
|     process.env['RUNNER_TOOL_CACHE'] = '/faked-hostedtoolcache2';
 | |
|     const cacheDir2 = await tc.cacheDir('/qzx', 'go', '1.2.3', 'arch');
 | |
|     expect(cacheDir2).toBe(
 | |
|       path.join('/', 'faked-hostedtoolcache2', 'go', '1.2.3', 'arch')
 | |
|     );
 | |
|   });
 | |
| });
 |