1
0
Fork 0
mirror of https://code.forgejo.org/actions/cache.git synced 2025-04-02 04:57:46 +02:00

Changes after rebase

This commit is contained in:
Marc Mueller 2023-01-08 11:03:38 +01:00
parent 64ae8e04f8
commit ec9f13e3be
7 changed files with 34 additions and 20 deletions

View file

@ -214,7 +214,7 @@ test("Fail restore when fail on cache miss is enabled and primary key not found"
path: path,
key,
restoreKeys: [restoreKey],
failOnCacheMiss: "true"
failOnCacheMiss: true
});
const failedMock = jest.spyOn(core, "setFailed");
@ -229,7 +229,13 @@ test("Fail restore when fail on cache miss is enabled and primary key not found"
await run();
expect(restoreCacheMock).toHaveBeenCalledTimes(1);
expect(restoreCacheMock).toHaveBeenCalledWith([path], key, [restoreKey]);
expect(restoreCacheMock).toHaveBeenCalledWith(
[path],
key,
[restoreKey],
{},
false
);
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(0);
@ -248,7 +254,7 @@ test("Fail restore when fail on cache miss is enabled and primary key doesn't ma
path: path,
key,
restoreKeys: [restoreKey],
failOnCacheMiss: "true"
failOnCacheMiss: true
});
const failedMock = jest.spyOn(core, "setFailed");
@ -263,7 +269,13 @@ test("Fail restore when fail on cache miss is enabled and primary key doesn't ma
await run();
expect(restoreCacheMock).toHaveBeenCalledTimes(1);
expect(restoreCacheMock).toHaveBeenCalledWith([path], key, [restoreKey]);
expect(restoreCacheMock).toHaveBeenCalledWith(
[path],
key,
[restoreKey],
{},
false
);
expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key);
expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1);

View file

@ -11,10 +11,6 @@ inputs:
restore-keys:
description: 'An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case.'
required: false
fail-on-cache-miss:
description: 'Fail the workflow if the cache is not found for the primary key'
required: false
default: "false"
upload-chunk-size:
description: 'The chunk size used to split up large files during upload, in bytes'
required: false
@ -22,6 +18,10 @@ inputs:
description: 'An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms'
default: 'false'
required: false
fail-on-cache-miss:
description: 'Fail the workflow if the cache is not found for the primary key'
default: 'false'
required: false
outputs:
cache-hit:
description: 'A boolean value to indicate an exact match was found for the primary key'

View file

@ -50496,9 +50496,10 @@ function restoreImpl(stateProvider) {
required: true
});
const enableCrossOsArchive = utils.getInputAsBool(constants_1.Inputs.EnableCrossOsArchive);
const failOnCacheMiss = utils.getInputAsBool(constants_1.Inputs.FailOnCacheMiss);
const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, {}, enableCrossOsArchive);
if (!cacheKey) {
if (core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
if (failOnCacheMiss) {
throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
}
core.info(`Cache not found for input keys: ${[
@ -50511,7 +50512,7 @@ function restoreImpl(stateProvider) {
stateProvider.setState(constants_1.State.CacheMatchedKey, cacheKey);
const isExactKeyMatch = utils.isExactKeyMatch(core.getInput(constants_1.Inputs.Key, { required: true }), cacheKey);
core.setOutput(constants_1.Outputs.CacheHit, isExactKeyMatch.toString());
if (!isExactKeyMatch && core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
if (!isExactKeyMatch && failOnCacheMiss) {
throw new Error(`Restored cache key doesn't match the given input key. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
}
core.info(`Cache restored from key: ${cacheKey}`);

View file

@ -50496,9 +50496,10 @@ function restoreImpl(stateProvider) {
required: true
});
const enableCrossOsArchive = utils.getInputAsBool(constants_1.Inputs.EnableCrossOsArchive);
const failOnCacheMiss = utils.getInputAsBool(constants_1.Inputs.FailOnCacheMiss);
const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, {}, enableCrossOsArchive);
if (!cacheKey) {
if (core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
if (failOnCacheMiss) {
throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
}
core.info(`Cache not found for input keys: ${[
@ -50511,7 +50512,7 @@ function restoreImpl(stateProvider) {
stateProvider.setState(constants_1.State.CacheMatchedKey, cacheKey);
const isExactKeyMatch = utils.isExactKeyMatch(core.getInput(constants_1.Inputs.Key, { required: true }), cacheKey);
core.setOutput(constants_1.Outputs.CacheHit, isExactKeyMatch.toString());
if (!isExactKeyMatch && core.getBooleanInput(constants_1.Inputs.FailOnCacheMiss)) {
if (!isExactKeyMatch && failOnCacheMiss) {
throw new Error(`Restored cache key doesn't match the given input key. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`);
}
core.info(`Cache restored from key: ${cacheKey}`);

View file

@ -17,8 +17,8 @@ inputs:
required: false
fail-on-cache-miss:
description: 'Fail the workflow if the cache is not found for the primary key'
default: 'false'
required: false
default: "false"
outputs:
cache-hit:
description: 'A boolean value to indicate an exact match was found for the primary key'

View file

@ -34,6 +34,7 @@ async function restoreImpl(
const enableCrossOsArchive = utils.getInputAsBool(
Inputs.EnableCrossOsArchive
);
const failOnCacheMiss = utils.getInputAsBool(Inputs.FailOnCacheMiss);
const cacheKey = await cache.restoreCache(
cachePaths,
@ -44,7 +45,7 @@ async function restoreImpl(
);
if (!cacheKey) {
if (core.getBooleanInput(Inputs.FailOnCacheMiss)) {
if (failOnCacheMiss) {
throw new Error(
`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`
);
@ -68,7 +69,7 @@ async function restoreImpl(
);
core.setOutput(Outputs.CacheHit, isExactKeyMatch.toString());
if (!isExactKeyMatch && core.getBooleanInput(Inputs.FailOnCacheMiss)) {
if (!isExactKeyMatch && failOnCacheMiss) {
throw new Error(
`Restored cache key doesn't match the given input key. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`
);

View file

@ -14,13 +14,12 @@ interface CacheInput {
key: string;
restoreKeys?: string[];
enableCrossOsArchive?: boolean;
failOnCacheMiss?: string;
failOnCacheMiss?: boolean;
}
export function setInputs(input: CacheInput): void {
setInput(Inputs.Path, input.path);
setInput(Inputs.Key, input.key);
setInput(Inputs.FailOnCacheMiss, "false");
input.restoreKeys &&
setInput(Inputs.RestoreKeys, input.restoreKeys.join("\n"));
input.enableCrossOsArchive !== undefined &&
@ -28,15 +27,15 @@ export function setInputs(input: CacheInput): void {
Inputs.EnableCrossOsArchive,
input.enableCrossOsArchive.toString()
);
input.failOnCacheMiss &&
setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss);
input.failOnCacheMiss !== undefined &&
setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss.toString());
}
export function clearInputs(): void {
delete process.env[getInputName(Inputs.Path)];
delete process.env[getInputName(Inputs.Key)];
delete process.env[getInputName(Inputs.RestoreKeys)];
delete process.env[getInputName(Inputs.FailOnCacheMiss)];
delete process.env[getInputName(Inputs.UploadChunkSize)];
delete process.env[getInputName(Inputs.EnableCrossOsArchive)];
delete process.env[getInputName(Inputs.FailOnCacheMiss)];
}