mirror of
https://code.forgejo.org/actions/setup-node.git
synced 2024-11-06 07:35:51 -05:00
75 lines
2.5 KiB
TypeScript
75 lines
2.5 KiB
TypeScript
import * as core from '@actions/core';
|
|
import * as cache from '@actions/cache';
|
|
import path from 'path';
|
|
import * as utils from '../src/cache-utils';
|
|
import {PackageManagerInfo, isCacheFeatureAvailable} from '../src/cache-utils';
|
|
|
|
describe('cache-utils', () => {
|
|
const versionYarn1 = '1.2.3';
|
|
|
|
let debugSpy: jest.SpyInstance;
|
|
let getCommandOutputSpy: jest.SpyInstance;
|
|
let isFeatureAvailable: jest.SpyInstance;
|
|
let info: jest.SpyInstance;
|
|
let warningSpy: jest.SpyInstance;
|
|
|
|
beforeEach(() => {
|
|
process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
|
|
debugSpy = jest.spyOn(core, 'debug');
|
|
debugSpy.mockImplementation(msg => {});
|
|
|
|
info = jest.spyOn(core, 'info');
|
|
warningSpy = jest.spyOn(core, 'warning');
|
|
|
|
isFeatureAvailable = jest.spyOn(cache, 'isFeatureAvailable');
|
|
|
|
getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput');
|
|
});
|
|
|
|
describe('getPackageManagerInfo', () => {
|
|
it.each<[string, PackageManagerInfo | null]>([
|
|
['npm', utils.supportedPackageManagers.npm],
|
|
['pnpm', utils.supportedPackageManagers.pnpm],
|
|
['yarn', utils.supportedPackageManagers.yarn1],
|
|
['yarn1', null],
|
|
['yarn2', null],
|
|
['npm7', null]
|
|
])('getPackageManagerInfo for %s is %o', async (packageManager, result) => {
|
|
getCommandOutputSpy.mockImplementationOnce(() => versionYarn1);
|
|
await expect(utils.getPackageManagerInfo(packageManager)).resolves.toBe(
|
|
result
|
|
);
|
|
});
|
|
});
|
|
|
|
it('isCacheFeatureAvailable for GHES is false', () => {
|
|
isFeatureAvailable.mockImplementation(() => false);
|
|
process.env['GITHUB_SERVER_URL'] = 'https://www.test.com';
|
|
|
|
expect(isCacheFeatureAvailable()).toBeFalsy();
|
|
expect(warningSpy).toHaveBeenCalledWith(
|
|
'Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.'
|
|
);
|
|
});
|
|
|
|
it('isCacheFeatureAvailable for GHES has an interhal error', () => {
|
|
isFeatureAvailable.mockImplementation(() => false);
|
|
process.env['GITHUB_SERVER_URL'] = '';
|
|
isCacheFeatureAvailable();
|
|
expect(warningSpy).toHaveBeenCalledWith(
|
|
'The runner was not able to contact the cache service. Caching will be skipped'
|
|
);
|
|
});
|
|
|
|
it('isCacheFeatureAvailable for GHES is available', () => {
|
|
isFeatureAvailable.mockImplementation(() => true);
|
|
|
|
expect(isCacheFeatureAvailable()).toStrictEqual(true);
|
|
});
|
|
|
|
afterEach(() => {
|
|
process.env['GITHUB_SERVER_URL'] = '';
|
|
jest.resetAllMocks();
|
|
jest.clearAllMocks();
|
|
});
|
|
});
|