mirror of
				https://github.com/actions/setup-go.git
				synced 2025-11-04 06:25:55 -05:00 
			
		
		
		
	
		
			
	
	
		
			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')
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |