mirror of
https://github.com/actions/setup-go.git
synced 2024-11-15 11:54:34 +08:00
87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
|
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 = 'path';
|
||
|
|
||
|
beforeEach(() => {
|
||
|
getCacheDirectoryPathSpy.mockImplementation(
|
||
|
(PackageManager: PackageManagerInfo) => {
|
||
|
return new Promise<string[]>(resolve => {
|
||
|
resolve(['cache_directory_path', '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('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('file_hash');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
restoreCacheSpy.mockImplementation(() => {
|
||
|
return new Promise<string>(resolve => {
|
||
|
resolve('cache_key');
|
||
|
});
|
||
|
});
|
||
|
|
||
|
//Act + Assert
|
||
|
await cacheRestore.restoreCache(packageManager, cacheDependencyPath);
|
||
|
expect(setOutputSpy).toBeCalledWith('cache-hit', true);
|
||
|
});
|
||
|
});
|