mirror of
https://code.forgejo.org/actions/setup-node.git
synced 2024-11-05 11:35:48 +00:00
39370e3970
Some checks failed
Basic validation / Basic validation (push) Failing after 0s
Check dist / Check dist/ (push) Failing after -1m19s
CodeQL analysis / CodeQL analysis (push) Failing after 0s
Licensed / Licensed (push) Failing after -1m19s
e2e-cache / Test npm (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 18, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 20, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test npm (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 18, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test pnpm (Node 22, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 18, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test yarn 1 (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 18, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 18, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 18, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 20, windows-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, macos-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, ubuntu-latest) (push) Has been cancelled
e2e-cache / Test yarn 3 (Node 22, windows-latest) (push) Has been cancelled
versions / old-versions (macos-13) (push) Has been cancelled
e2e-cache / Test yarn subprojects (push) Has been cancelled
e2e-cache / Test yarn subprojects all locally managed (push) Has been cancelled
e2e-cache / Test yarn subprojects some locally managed (push) Has been cancelled
e2e-cache / Test yarn subprojects managed by git (push) Has been cancelled
proxy / test-proxy (push) Has been cancelled
proxy / test-bypass-proxy (push) Has been cancelled
versions / local-cache (18, macos-latest) (push) Has been cancelled
versions / local-cache (18, ubuntu-latest) (push) Has been cancelled
versions / local-cache (18, windows-latest) (push) Has been cancelled
versions / local-cache (20, macos-latest) (push) Has been cancelled
versions / local-cache (20, ubuntu-latest) (push) Has been cancelled
versions / local-cache (20, windows-latest) (push) Has been cancelled
versions / local-cache (22, macos-latest) (push) Has been cancelled
versions / local-cache (22, ubuntu-latest) (push) Has been cancelled
versions / local-cache (22, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/*, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/*, ubuntu-latest) (push) Has been cancelled
versions / lts-syntax (lts/*, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, macos-latest) (push) Has been cancelled
versions / lts-syntax (lts/-1, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/-1, ubuntu-latest) (push) Has been cancelled
versions / lts-syntax (lts/-1, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, ubuntu-latest) (push) Has been cancelled
versions / lts-syntax (lts/dubnium, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/erbium, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/erbium, ubuntu-latest) (push) Has been cancelled
versions / lts-syntax (lts/erbium, windows-latest) (push) Has been cancelled
versions / lts-syntax (lts/fermium, macos-13) (push) Has been cancelled
versions / lts-syntax (lts/fermium, ubuntu-latest) (push) Has been cancelled
versions / lts-syntax (lts/fermium, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, ubuntu-latest) (push) Has been cancelled
versions / v8-canary-syntax (20-v8-canary, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary, macos-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary, ubuntu-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, macos-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, ubuntu-latest) (push) Has been cancelled
versions / manifest (22.0.0, windows-latest) (push) Has been cancelled
versions / v8-canary-syntax (20.0.0-v8-canary20221101e50e45c9f8, windows-latest) (push) Has been cancelled
versions / nightly-syntax (18.0.0-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (18.0.0-nightly, ubuntu-latest) (push) Has been cancelled
versions / nightly-syntax (18.0.0-nightly, windows-latest) (push) Has been cancelled
versions / nightly-syntax (20.11.0-nightly202312211a0be537da, macos-latest) (push) Has been cancelled
versions / nightly-syntax (20.11.0-nightly202312211a0be537da, ubuntu-latest) (push) Has been cancelled
versions / nightly-syntax (20.11.0-nightly202312211a0be537da, windows-latest) (push) Has been cancelled
versions / nightly-syntax (21-nightly, macos-latest) (push) Has been cancelled
versions / nightly-syntax (21-nightly, ubuntu-latest) (push) Has been cancelled
versions / nightly-syntax (21-nightly, windows-latest) (push) Has been cancelled
versions / rc-syntax (18.0.0-rc.2, macos-latest) (push) Has been cancelled
versions / rc-syntax (18.0.0-rc.2, ubuntu-latest) (push) Has been cancelled
versions / rc-syntax (18.0.0-rc.2, windows-latest) (push) Has been cancelled
versions / rc-syntax (19.0.0-rc.0, macos-latest) (push) Has been cancelled
versions / rc-syntax (19.0.0-rc.0, ubuntu-latest) (push) Has been cancelled
versions / rc-syntax (19.0.0-rc.0, windows-latest) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, macos-latest) (push) Has been cancelled
versions / manifest (20.10.0, windows-latest) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, ubuntu-latest) (push) Has been cancelled
versions / rc-syntax (20.0.0-rc.1, windows-latest) (push) Has been cancelled
versions / manifest (18.20.0, macos-latest) (push) Has been cancelled
versions / manifest (18.20.0, ubuntu-latest) (push) Has been cancelled
versions / manifest (18.20.0, windows-latest) (push) Has been cancelled
versions / manifest (20.10.0, macos-latest) (push) Has been cancelled
versions / manifest (20.10.0, ubuntu-latest) (push) Has been cancelled
versions / manifest (22.0.0, macos-latest) (push) Has been cancelled
versions / manifest (22.0.0, ubuntu-latest) (push) Has been cancelled
versions / check-latest (18, macos-latest) (push) Has been cancelled
versions / check-latest (18, ubuntu-latest) (push) Has been cancelled
versions / check-latest (20, macos-latest) (push) Has been cancelled
versions / check-latest (20, ubuntu-latest) (push) Has been cancelled
versions / check-latest (20, windows-latest) (push) Has been cancelled
versions / check-latest (22, macos-latest) (push) Has been cancelled
versions / check-latest (18, windows-latest) (push) Has been cancelled
versions / check-latest (22, ubuntu-latest) (push) Has been cancelled
versions / check-latest (22, windows-latest) (push) Has been cancelled
versions / version-file (.nvmrc, macos-latest) (push) Has been cancelled
versions / version-file (.nvmrc, ubuntu-latest) (push) Has been cancelled
versions / version-file (.nvmrc, windows-latest) (push) Has been cancelled
versions / version-file (.tool-versions, macos-latest) (push) Has been cancelled
versions / version-file (.tool-versions, ubuntu-latest) (push) Has been cancelled
versions / version-file (.tool-versions, windows-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, macos-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, ubuntu-latest) (push) Has been cancelled
versions / version-file (.tool-versions-node, windows-latest) (push) Has been cancelled
versions / version-file (package.json, macos-latest) (push) Has been cancelled
versions / version-file (package.json, ubuntu-latest) (push) Has been cancelled
versions / version-file (package.json, windows-latest) (push) Has been cancelled
versions / version-file-volta (macos-latest) (push) Has been cancelled
versions / version-file-volta (ubuntu-latest) (push) Has been cancelled
versions / version-file-volta (windows-latest) (push) Has been cancelled
versions / version-file-volta-extends (macos-latest) (push) Has been cancelled
versions / version-file-volta-extends (ubuntu-latest) (push) Has been cancelled
versions / version-file-volta-extends (windows-latest) (push) Has been cancelled
versions / node-dist (17, macos-latest) (push) Has been cancelled
versions / node-dist (17, ubuntu-latest) (push) Has been cancelled
versions / node-dist (17, windows-latest) (push) Has been cancelled
versions / node-dist (19, macos-latest) (push) Has been cancelled
versions / node-dist (19, ubuntu-latest) (push) Has been cancelled
versions / node-dist (19, windows-latest) (push) Has been cancelled
versions / old-versions (ubuntu-latest) (push) Has been cancelled
versions / old-versions (windows-latest) (push) Has been cancelled
versions / arch (push) Has been cancelled
versions / node-latest-aliases (current, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (current, ubuntu-latest) (push) Has been cancelled
versions / node-latest-aliases (current, windows-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, ubuntu-latest) (push) Has been cancelled
versions / node-latest-aliases (latest, windows-latest) (push) Has been cancelled
versions / node-latest-aliases (node, macos-latest) (push) Has been cancelled
versions / node-latest-aliases (node, ubuntu-latest) (push) Has been cancelled
versions / node-latest-aliases (node, windows-latest) (push) Has been cancelled
* fix: add arch to cached path * fix: change from using env to os module * fix: use process.env.RUNNER_OS instead of os.platform() * fix: remove unused var
187 lines
5.6 KiB
TypeScript
187 lines
5.6 KiB
TypeScript
import * as core from '@actions/core';
|
|
import * as cache from '@actions/cache';
|
|
import * as path from 'path';
|
|
import * as glob from '@actions/glob';
|
|
import osm from 'os';
|
|
|
|
import * as utils from '../src/cache-utils';
|
|
import {restoreCache} from '../src/cache-restore';
|
|
|
|
describe('cache-restore', () => {
|
|
process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
|
|
if (!process.env.RUNNER_OS) {
|
|
process.env.RUNNER_OS = 'Linux';
|
|
}
|
|
const platform = process.env.RUNNER_OS;
|
|
const arch = 'arm64';
|
|
const commonPath = '/some/random/path';
|
|
const npmCachePath = `${commonPath}/npm`;
|
|
const pnpmCachePath = `${commonPath}/pnpm`;
|
|
const yarn1CachePath = `${commonPath}/yarn1`;
|
|
const yarn2CachePath = `${commonPath}/yarn2`;
|
|
const yarnFileHash =
|
|
'b8a0bae5243251f7c07dd52d1f78ff78281dfefaded700a176261b6b54fa245b';
|
|
const npmFileHash =
|
|
'abf7c9b306a3149dcfba4673e2362755503bcceaab46f0e4e6fee0ade493e20c';
|
|
const pnpmFileHash =
|
|
'26309058093e84713f38869c50cf1cee9b08155ede874ec1b44ce3fca8c68c70';
|
|
const cachesObject = {
|
|
[npmCachePath]: npmFileHash,
|
|
[pnpmCachePath]: pnpmFileHash,
|
|
[yarn1CachePath]: yarnFileHash,
|
|
[yarn2CachePath]: yarnFileHash
|
|
};
|
|
|
|
function findCacheFolder(command: string) {
|
|
switch (command) {
|
|
case 'npm config get cache':
|
|
return npmCachePath;
|
|
case 'pnpm store path --silent':
|
|
return pnpmCachePath;
|
|
case 'yarn cache dir':
|
|
return yarn1CachePath;
|
|
case 'yarn config get cacheFolder':
|
|
return yarn2CachePath;
|
|
default:
|
|
return 'packge/not/found';
|
|
}
|
|
}
|
|
|
|
let saveStateSpy: jest.SpyInstance;
|
|
let infoSpy: jest.SpyInstance;
|
|
let debugSpy: jest.SpyInstance;
|
|
let setOutputSpy: jest.SpyInstance;
|
|
let getCommandOutputSpy: jest.SpyInstance;
|
|
let restoreCacheSpy: jest.SpyInstance;
|
|
let hashFilesSpy: jest.SpyInstance;
|
|
let archSpy: jest.SpyInstance;
|
|
|
|
beforeEach(() => {
|
|
// core
|
|
infoSpy = jest.spyOn(core, 'info');
|
|
infoSpy.mockImplementation(() => undefined);
|
|
|
|
debugSpy = jest.spyOn(core, 'debug');
|
|
debugSpy.mockImplementation(() => undefined);
|
|
|
|
setOutputSpy = jest.spyOn(core, 'setOutput');
|
|
setOutputSpy.mockImplementation(() => undefined);
|
|
|
|
saveStateSpy = jest.spyOn(core, 'saveState');
|
|
saveStateSpy.mockImplementation(() => undefined);
|
|
|
|
// glob
|
|
hashFilesSpy = jest.spyOn(glob, 'hashFiles');
|
|
hashFilesSpy.mockImplementation((pattern: string) => {
|
|
if (pattern.includes('package-lock.json')) {
|
|
return npmFileHash;
|
|
} else if (pattern.includes('pnpm-lock.yaml')) {
|
|
return pnpmFileHash;
|
|
} else if (pattern.includes('yarn.lock')) {
|
|
return yarnFileHash;
|
|
} else {
|
|
return '';
|
|
}
|
|
});
|
|
|
|
// cache
|
|
restoreCacheSpy = jest.spyOn(cache, 'restoreCache');
|
|
restoreCacheSpy.mockImplementation(
|
|
(cachePaths: Array<string>, key: string) => {
|
|
if (!cachePaths || cachePaths.length === 0) {
|
|
return undefined;
|
|
}
|
|
|
|
const cachPath = cachePaths[0];
|
|
const fileHash = cachesObject[cachPath];
|
|
|
|
if (key.includes(fileHash)) {
|
|
return key;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
);
|
|
|
|
// cache-utils
|
|
getCommandOutputSpy = jest.spyOn(utils, 'getCommandOutput');
|
|
|
|
// os
|
|
archSpy = jest.spyOn(osm, 'arch');
|
|
archSpy.mockImplementation(() => arch);
|
|
});
|
|
|
|
describe('Validate provided package manager', () => {
|
|
it.each([['npm7'], ['npm6'], ['pnpm6'], ['yarn1'], ['yarn2'], ['random']])(
|
|
'Throw an error because %s is not supported',
|
|
async packageManager => {
|
|
await expect(restoreCache(packageManager, '')).rejects.toThrow(
|
|
`Caching for '${packageManager}' is not supported`
|
|
);
|
|
}
|
|
);
|
|
});
|
|
|
|
describe('Restore dependencies', () => {
|
|
it.each([
|
|
['yarn', '2.1.2', yarnFileHash],
|
|
['yarn', '1.2.3', yarnFileHash],
|
|
['npm', '', npmFileHash],
|
|
['pnpm', '', pnpmFileHash]
|
|
])(
|
|
'restored dependencies for %s',
|
|
async (packageManager, toolVersion, fileHash) => {
|
|
getCommandOutputSpy.mockImplementation((command: string) => {
|
|
if (command.includes('version')) {
|
|
return toolVersion;
|
|
} else {
|
|
return findCacheFolder(command);
|
|
}
|
|
});
|
|
|
|
await restoreCache(packageManager, '');
|
|
expect(hashFilesSpy).toHaveBeenCalled();
|
|
expect(infoSpy).toHaveBeenCalledWith(
|
|
`Cache restored from key: node-cache-${platform}-${arch}-${packageManager}-${fileHash}`
|
|
);
|
|
expect(infoSpy).not.toHaveBeenCalledWith(
|
|
`${packageManager} cache is not found`
|
|
);
|
|
expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', true);
|
|
}
|
|
);
|
|
});
|
|
|
|
describe('Dependencies changed', () => {
|
|
it.each([
|
|
['yarn', '2.1.2', yarnFileHash],
|
|
['yarn', '1.2.3', yarnFileHash],
|
|
['npm', '', npmFileHash],
|
|
['pnpm', '', pnpmFileHash]
|
|
])(
|
|
'dependencies are changed %s',
|
|
async (packageManager, toolVersion, fileHash) => {
|
|
getCommandOutputSpy.mockImplementation((command: string) => {
|
|
if (command.includes('version')) {
|
|
return toolVersion;
|
|
} else {
|
|
return findCacheFolder(command);
|
|
}
|
|
});
|
|
|
|
restoreCacheSpy.mockImplementationOnce(() => undefined);
|
|
await restoreCache(packageManager, '');
|
|
expect(hashFilesSpy).toHaveBeenCalled();
|
|
expect(infoSpy).toHaveBeenCalledWith(
|
|
`${packageManager} cache is not found`
|
|
);
|
|
expect(setOutputSpy).toHaveBeenCalledWith('cache-hit', false);
|
|
}
|
|
);
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.resetAllMocks();
|
|
jest.clearAllMocks();
|
|
});
|
|
});
|