mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-31 23:53:35 +00:00 
			
		
		
		
	Add cache-key as output
This commit is contained in:
		
							parent
							
								
									48b90677b6
								
							
						
					
					
						commit
						870d3d8e13
					
				| @ -180,6 +180,38 @@ describe('cache-restore', () => { | ||||
|     ); | ||||
|   }); | ||||
| 
 | ||||
|   describe('Cache key output', () => { | ||||
|     const packageManager = 'npm'; | ||||
|     const cacheDependencyPath = 'package-lock.json'; | ||||
|     const primaryKey = `node-cache-${platform}-${arch}-${packageManager}-${npmFileHash}`; | ||||
|     const cacheKey = `node-cache-${platform}-${arch}-${packageManager}-abc123`; | ||||
| 
 | ||||
|     beforeEach(() => { | ||||
|       getCommandOutputSpy.mockImplementation(command => { | ||||
|         if (command.includes('npm config get cache')) return npmCachePath; | ||||
|       }); | ||||
|     }); | ||||
| 
 | ||||
|     it('sets the cache-key output', async () => { | ||||
|       restoreCacheSpy.mockResolvedValue(cacheKey); | ||||
|       await restoreCache(packageManager, cacheDependencyPath); | ||||
|       expect(setOutputSpy).toHaveBeenCalledWith('cache-key', primaryKey); | ||||
|     }); | ||||
| 
 | ||||
|     it('sets the cache-hit output to true when cache is found', async () => { | ||||
|       restoreCacheSpy.mockResolvedValue(cacheKey); | ||||
|       await restoreCache(packageManager, cacheDependencyPath); | ||||
|       expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', true); | ||||
|     }); | ||||
| 
 | ||||
|     it('sets the cache-hit output to false when cache is not found', async () => { | ||||
|       restoreCacheSpy.mockResolvedValue(undefined); | ||||
|       await restoreCache(packageManager, cacheDependencyPath); | ||||
| 
 | ||||
|       expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', false); | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   afterEach(() => { | ||||
|     jest.resetAllMocks(); | ||||
|     jest.clearAllMocks(); | ||||
|  | ||||
| @ -27,6 +27,7 @@ describe('run', () => { | ||||
|   let setFailedSpy: jest.SpyInstance; | ||||
|   let getStateSpy: jest.SpyInstance; | ||||
|   let saveCacheSpy: jest.SpyInstance; | ||||
|   let setOutputSpy: jest.SpyInstance; | ||||
|   let getCommandOutputSpy: jest.SpyInstance; | ||||
|   let hashFilesSpy: jest.SpyInstance; | ||||
|   let existsSpy: jest.SpyInstance; | ||||
| @ -53,6 +54,8 @@ describe('run', () => { | ||||
|     saveCacheSpy = jest.spyOn(cache, 'saveCache'); | ||||
|     saveCacheSpy.mockImplementation(() => undefined); | ||||
| 
 | ||||
|     setOutputSpy = jest.spyOn(core, 'setOutput'); | ||||
| 
 | ||||
|     // glob
 | ||||
|     hashFilesSpy = jest.spyOn(glob, 'hashFiles'); | ||||
|     hashFilesSpy.mockImplementation((pattern: string) => { | ||||
| @ -228,6 +231,7 @@ describe('run', () => { | ||||
|       expect(infoSpy).toHaveBeenLastCalledWith( | ||||
|         `Cache saved with the key: ${npmFileHash}` | ||||
|       ); | ||||
|       expect(core.setOutput).toHaveBeenCalledWith('cache-key', npmFileHash); | ||||
|       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
| 
 | ||||
| @ -258,6 +262,7 @@ describe('run', () => { | ||||
|       expect(infoSpy).toHaveBeenLastCalledWith( | ||||
|         `Cache saved with the key: ${npmFileHash}` | ||||
|       ); | ||||
|       expect(core.setOutput).toHaveBeenCalledWith('cache-key', npmFileHash); | ||||
|       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
| 
 | ||||
| @ -288,6 +293,7 @@ describe('run', () => { | ||||
|       expect(infoSpy).toHaveBeenLastCalledWith( | ||||
|         `Cache saved with the key: ${yarnFileHash}` | ||||
|       ); | ||||
|       expect(core.setOutput).toHaveBeenCalledWith('cache-key', yarnFileHash); | ||||
|       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
| 
 | ||||
| @ -297,9 +303,9 @@ describe('run', () => { | ||||
|         key === State.CachePackageManager | ||||
|           ? inputs['cache'] | ||||
|           : key === State.CacheMatchedKey | ||||
|           ? pnpmFileHash | ||||
|           ? 'no-match' | ||||
|           : key === State.CachePrimaryKey | ||||
|           ? npmFileHash | ||||
|           ? pnpmFileHash | ||||
|           : key === State.CachePaths | ||||
|           ? '["/foo/bar"]' | ||||
|           : 'not expected' | ||||
| @ -316,8 +322,9 @@ describe('run', () => { | ||||
|       ); | ||||
|       expect(saveCacheSpy).toHaveBeenCalled(); | ||||
|       expect(infoSpy).toHaveBeenLastCalledWith( | ||||
|         `Cache saved with the key: ${npmFileHash}` | ||||
|         `Cache saved with the key: ${pnpmFileHash}` | ||||
|       ); | ||||
|       expect(core.setOutput).toHaveBeenCalledWith('cache-key', pnpmFileHash); | ||||
|       expect(setFailedSpy).not.toHaveBeenCalled(); | ||||
|     }); | ||||
| 
 | ||||
|  | ||||
| @ -30,6 +30,8 @@ inputs: | ||||
| outputs: | ||||
|   cache-hit:  | ||||
|     description: 'A boolean value to indicate if a cache was hit.' | ||||
|   cache-key: | ||||
|     description: 'The key used for the cache.' | ||||
|   node-version: | ||||
|     description: 'The installed node version.' | ||||
| runs: | ||||
|  | ||||
| @ -45,6 +45,7 @@ export const restoreCache = async ( | ||||
|   core.debug(`primary key is ${primaryKey}`); | ||||
| 
 | ||||
|   core.saveState(State.CachePrimaryKey, primaryKey); | ||||
|   core.setOutput('cache-key', primaryKey); | ||||
| 
 | ||||
|   const isManagedByYarnBerry = await repoHasYarnBerryManagedDependencies( | ||||
|     packageManagerInfo, | ||||
|  | ||||
| @ -66,6 +66,7 @@ const cachePackages = async (packageManager: string) => { | ||||
|   } | ||||
| 
 | ||||
|   core.info(`Cache saved with the key: ${primaryKey}`); | ||||
|   core.setOutput('cache-key', primaryKey); | ||||
| }; | ||||
| 
 | ||||
| run(true); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user