mirror of
				https://github.com/actions/setup-node.git
				synced 2025-10-31 16:23:34 +00:00 
			
		
		
		
	Merge d23de777e0c5183cc61280d2963728c3b78c6998 into cd2651c46231bc0d6f48d6b34433b845331235fe
This commit is contained in:
		
						commit
						1f1bd92f39
					
				| @ -131,6 +131,7 @@ describe('cache-restore', () => { | ||||
|     ])( | ||||
|       'restored dependencies for %s', | ||||
|       async (packageManager, toolVersion, fileHash) => { | ||||
|         const expectedCacheKey = `node-cache-${platform}-${arch}-${packageManager}-${fileHash}`; | ||||
|         getCommandOutputSpy.mockImplementation((command: string) => { | ||||
|           if (command.includes('version')) { | ||||
|             return toolVersion; | ||||
| @ -142,12 +143,20 @@ describe('cache-restore', () => { | ||||
|         await restoreCache(packageManager, ''); | ||||
|         expect(hashFilesSpy).toHaveBeenCalled(); | ||||
|         expect(infoSpy).toHaveBeenCalledWith( | ||||
|           `Cache restored from key: node-cache-${platform}-${arch}-${packageManager}-${fileHash}` | ||||
|           `Cache restored from key: ${expectedCacheKey}` | ||||
|         ); | ||||
|         expect(infoSpy).not.toHaveBeenCalledWith( | ||||
|           `${packageManager} cache is not found` | ||||
|         ); | ||||
|         expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', true); | ||||
|         expect(setOutputSpy).toHaveBeenCalledWith( | ||||
|           'cache-key', | ||||
|           expectedCacheKey | ||||
|         ); | ||||
|         expect(setOutputSpy).toHaveBeenCalledWith( | ||||
|           'cache-matched-key', | ||||
|           expectedCacheKey | ||||
|         ); | ||||
|       } | ||||
|     ); | ||||
|   }); | ||||
| @ -161,6 +170,7 @@ describe('cache-restore', () => { | ||||
|     ])( | ||||
|       'dependencies are changed %s', | ||||
|       async (packageManager, toolVersion, fileHash) => { | ||||
|         const expectedCacheKey = `node-cache-${platform}-${arch}-${packageManager}-${fileHash}`; | ||||
|         getCommandOutputSpy.mockImplementation((command: string) => { | ||||
|           if (command.includes('version')) { | ||||
|             return toolVersion; | ||||
| @ -176,10 +186,72 @@ describe('cache-restore', () => { | ||||
|           `${packageManager} cache is not found` | ||||
|         ); | ||||
|         expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', false); | ||||
|         expect(setOutputSpy).toHaveBeenCalledWith( | ||||
|           'cache-key', | ||||
|           expectedCacheKey | ||||
|         ); | ||||
|         expect(setOutputSpy).toHaveBeenCalledWith( | ||||
|           'cache-matched-key', | ||||
|           undefined | ||||
|         ); | ||||
|       } | ||||
|     ); | ||||
|   }); | ||||
| 
 | ||||
|   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); | ||||
|     }); | ||||
| 
 | ||||
|     it('sets the cache-matched-key output when cache is found', async () => { | ||||
|       (cache.restoreCache as jest.Mock).mockResolvedValue(cacheKey); | ||||
| 
 | ||||
|       await restoreCache(packageManager, cacheDependencyPath); | ||||
| 
 | ||||
|       expect(core.setOutput).toHaveBeenCalledWith( | ||||
|         'cache-matched-key', | ||||
|         cacheKey | ||||
|       ); | ||||
|     }); | ||||
| 
 | ||||
|     it('sets the cache-matched-key output to undefined when cache is not found', async () => { | ||||
|       (cache.restoreCache as jest.Mock).mockResolvedValue(undefined); | ||||
| 
 | ||||
|       await restoreCache(packageManager, cacheDependencyPath); | ||||
| 
 | ||||
|       expect(core.setOutput).toHaveBeenCalledWith( | ||||
|         'cache-matched-key', | ||||
|         undefined | ||||
|       ); | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   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(); | ||||
|     }); | ||||
| 
 | ||||
|  | ||||
| @ -37,6 +37,10 @@ inputs: | ||||
| outputs: | ||||
|   cache-hit:  | ||||
|     description: 'A boolean value to indicate if a cache was hit.' | ||||
|   cache-key: | ||||
|     description: 'The key used for the cache.' | ||||
|   cache-matched-key: | ||||
|     description: 'The key used for the cache that resulted in a cache hit.' | ||||
|   node-version: | ||||
|     description: 'The installed node version.' | ||||
| runs: | ||||
|  | ||||
							
								
								
									
										1
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							| @ -89053,6 +89053,7 @@ const cachePackages = (packageManager) => __awaiter(void 0, void 0, void 0, func | ||||
|         return; | ||||
|     } | ||||
|     core.info(`Cache saved with the key: ${primaryKey}`); | ||||
|     core.setOutput('cache-key', primaryKey); | ||||
| }); | ||||
| run(true); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										3
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -98628,6 +98628,7 @@ const restoreCache = (packageManager, cacheDependencyPath) => __awaiter(void 0, | ||||
|     const primaryKey = `${keyPrefix}-${fileHash}`; | ||||
|     core.debug(`primary key is ${primaryKey}`); | ||||
|     core.saveState(constants_1.State.CachePrimaryKey, primaryKey); | ||||
|     core.setOutput('cache-key', primaryKey); | ||||
|     const isManagedByYarnBerry = yield (0, cache_utils_1.repoHasYarnBerryManagedDependencies)(packageManagerInfo, cacheDependencyPath); | ||||
|     let cacheKey; | ||||
|     if (isManagedByYarnBerry) { | ||||
| @ -98638,6 +98639,8 @@ const restoreCache = (packageManager, cacheDependencyPath) => __awaiter(void 0, | ||||
|         cacheKey = yield cache.restoreCache(cachePaths, primaryKey); | ||||
|     } | ||||
|     core.setOutput('cache-hit', Boolean(cacheKey)); | ||||
|     core.setOutput('cache-matched-key', cacheKey); | ||||
|     core.debug(`cache-matched-key is ${cacheKey}`); | ||||
|     if (!cacheKey) { | ||||
|         core.info(`${packageManager} cache is not found`); | ||||
|         return; | ||||
|  | ||||
| @ -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, | ||||
| @ -61,6 +62,8 @@ export const restoreCache = async ( | ||||
|   } | ||||
| 
 | ||||
|   core.setOutput('cache-hit', Boolean(cacheKey)); | ||||
|   core.setOutput('cache-matched-key', cacheKey); | ||||
|   core.debug(`cache-matched-key is ${cacheKey}`); | ||||
| 
 | ||||
|   if (!cacheKey) { | ||||
|     core.info(`${packageManager} cache is not found`); | ||||
|  | ||||
| @ -67,6 +67,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