mirror of
				https://github.com/actions/setup-go.git
				synced 2025-11-04 01:13:43 +00:00 
			
		
		
		
	Add unit-tests for cache-restore file
This commit is contained in:
		
							parent
							
								
									0d5a33faa6
								
							
						
					
					
						commit
						104f9bb034
					
				
							
								
								
									
										86
									
								
								__tests__/cache-restore.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								__tests__/cache-restore.test.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					import * as cache from '@actions/cache';
 | 
				
			||||||
 | 
					import * as core from '@actions/core';
 | 
				
			||||||
 | 
					import * as glob from '@actions/glob';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as cacheRestore from '../src/cache-restore';
 | 
				
			||||||
 | 
					import * as cacheUtils from '../src/cache-utils';
 | 
				
			||||||
 | 
					import {PackageManagerInfo} from '../src/package-managers';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('restoreCache', () => {
 | 
				
			||||||
 | 
					  //Arrange
 | 
				
			||||||
 | 
					  let hashFilesSpy = jest.spyOn(glob, 'hashFiles');
 | 
				
			||||||
 | 
					  let getCacheDirectoryPathSpy = jest.spyOn(
 | 
				
			||||||
 | 
					    cacheUtils,
 | 
				
			||||||
 | 
					    'getCacheDirectoryPath'
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					  let restoreCacheSpy = jest.spyOn(cache, 'restoreCache');
 | 
				
			||||||
 | 
					  let infoSpy = jest.spyOn(core, 'info');
 | 
				
			||||||
 | 
					  let setOutputSpy = jest.spyOn(core, 'setOutput');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const packageManager = 'default';
 | 
				
			||||||
 | 
					  const cacheDependencyPath = 'some path';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    getCacheDirectoryPathSpy.mockImplementation(
 | 
				
			||||||
 | 
					      (PackageManager: PackageManagerInfo) => {
 | 
				
			||||||
 | 
					        return new Promise<string>(resolve => {
 | 
				
			||||||
 | 
					          resolve('Some cache directory path');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should throw if dependency file path is not valid', async () => {
 | 
				
			||||||
 | 
					    //Arrange
 | 
				
			||||||
 | 
					    hashFilesSpy.mockImplementation((somePath: string) => {
 | 
				
			||||||
 | 
					      return new Promise<string>(resolve => {
 | 
				
			||||||
 | 
					        resolve('');
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Act + Assert
 | 
				
			||||||
 | 
					    expect(async () => {
 | 
				
			||||||
 | 
					      await cacheRestore.restoreCache(packageManager, cacheDependencyPath);
 | 
				
			||||||
 | 
					    }).rejects.toThrowError(
 | 
				
			||||||
 | 
					      'Some specified paths were not resolved, unable to cache dependencies.'
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should inform if cache hit is not occured', async () => {
 | 
				
			||||||
 | 
					    //Arrange
 | 
				
			||||||
 | 
					    hashFilesSpy.mockImplementation((somePath: string) => {
 | 
				
			||||||
 | 
					      return new Promise<string>(resolve => {
 | 
				
			||||||
 | 
					        resolve('Some File Hash');
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    restoreCacheSpy.mockImplementation(() => {
 | 
				
			||||||
 | 
					      return new Promise<string>(resolve => {
 | 
				
			||||||
 | 
					        resolve('');
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Act + Assert
 | 
				
			||||||
 | 
					    await cacheRestore.restoreCache(packageManager, cacheDependencyPath);
 | 
				
			||||||
 | 
					    expect(infoSpy).toBeCalledWith(`Cache is not found`);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should set output if cache hit is occured', async () => {
 | 
				
			||||||
 | 
					    //Arrange
 | 
				
			||||||
 | 
					    hashFilesSpy.mockImplementation((somePath: string) => {
 | 
				
			||||||
 | 
					      return new Promise<string>(resolve => {
 | 
				
			||||||
 | 
					        resolve('Some File Hash');
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    restoreCacheSpy.mockImplementation(() => {
 | 
				
			||||||
 | 
					      return new Promise<string>(resolve => {
 | 
				
			||||||
 | 
					        resolve('Some cache key');
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //Act + Assert
 | 
				
			||||||
 | 
					    await cacheRestore.restoreCache(packageManager, cacheDependencyPath);
 | 
				
			||||||
 | 
					    expect(setOutputSpy).toBeCalledWith('cache-hit', true);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
import * as exec from '@actions/exec';
 | 
					import * as exec from '@actions/exec';
 | 
				
			||||||
import {supportedPackageManagers, PackageManagerInfo} from './package-managers';
 | 
					import {supportedPackageManagers, PackageManagerInfo} from './package-managers';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
export const getCommandOutput = async (toolCommand: string) => {
 | 
					export const getCommandOutput = async (toolCommand: string) => {
 | 
				
			||||||
  let {stdout, stderr, exitCode} = await exec.getExecOutput(
 | 
					  let {stdout, stderr, exitCode} = await exec.getExecOutput(
 | 
				
			||||||
    toolCommand,
 | 
					    toolCommand,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user