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') | ||
|  |     ); | ||
|  |   }); | ||
|  | }); |