From 3624ceb22c1c5a301c8db4169662070a689d9ea8 Mon Sep 17 00:00:00 2001 From: Josh Gross Date: Tue, 8 Oct 2024 13:08:22 -0400 Subject: [PATCH] Restore original behavior of `cache-hit` output (#1467) * Restore original behavior of `cache-hit` output * Bump version to 4.1.1 --- README.md | 6 +++--- RELEASES.md | 3 +++ __tests__/restore.test.ts | 2 +- __tests__/restoreOnly.test.ts | 3 +-- dist/restore-only/index.js | 3 ++- dist/restore/index.js | 3 ++- package-lock.json | 4 ++-- package.json | 2 +- src/restoreImpl.ts | 4 +++- 9 files changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7544efd..c58a135 100644 --- a/README.md +++ b/README.md @@ -64,9 +64,9 @@ If you are using a `self-hosted` Windows runner, `GNU tar` and `zstd` are requir ### Outputs -* `cache-hit` - A boolean value to indicate an exact match was found for the key. - - > **Note** `cache-hit` will only be set to `true` when a cache hit occurs for the exact `key` match. For a partial key match via `restore-keys` or a cache miss, it will be set to `false`. +* `cache-hit` - A string value to indicate an exact match was found for the key. + * If there's a cache hit, this will be 'true' or 'false' to indicate if there's an exact match for `key`. + * If there's a cache miss, this will be an empty string. See [Skipping steps based on cache-hit](#skipping-steps-based-on-cache-hit) for info on using this output diff --git a/RELEASES.md b/RELEASES.md index d576703..b490d02 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,5 +1,8 @@ # Releases +### 4.1.1 +- Restore original behavior of `cache-hit` output - [#1467](https://github.com/actions/cache/pull/1467) + ### 4.1.0 - Ensure `cache-hit` output is set when a cache is missed - [#1404](https://github.com/actions/cache/pull/1404) - Deprecate `save-always` input - [#1452](https://github.com/actions/cache/pull/1452) diff --git a/__tests__/restore.test.ts b/__tests__/restore.test.ts index 9b066eb..250f7ef 100644 --- a/__tests__/restore.test.ts +++ b/__tests__/restore.test.ts @@ -260,7 +260,7 @@ test("Fail restore when fail on cache miss is enabled and primary + restore keys ); expect(stateMock).toHaveBeenCalledWith("CACHE_KEY", key); - expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); + expect(setCacheHitOutputMock).toHaveBeenCalledTimes(0); expect(failedMock).toHaveBeenCalledWith( `Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${key}` diff --git a/__tests__/restoreOnly.test.ts b/__tests__/restoreOnly.test.ts index 840307d..81e5bca 100644 --- a/__tests__/restoreOnly.test.ts +++ b/__tests__/restoreOnly.test.ts @@ -86,8 +86,7 @@ test("restore with no cache found", async () => { ); expect(outputMock).toHaveBeenCalledWith("cache-primary-key", key); - expect(outputMock).toHaveBeenCalledWith("cache-hit", "false"); - expect(outputMock).toHaveBeenCalledTimes(2); + expect(outputMock).toHaveBeenCalledTimes(1); expect(failedMock).toHaveBeenCalledTimes(0); expect(infoMock).toHaveBeenCalledWith( diff --git a/dist/restore-only/index.js b/dist/restore-only/index.js index d2f3631..14e97b1 100644 --- a/dist/restore-only/index.js +++ b/dist/restore-only/index.js @@ -59415,7 +59415,8 @@ function restoreImpl(stateProvider, earlyExit) { const lookupOnly = utils.getInputAsBool(constants_1.Inputs.LookupOnly); const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, { lookupOnly: lookupOnly }, enableCrossOsArchive); if (!cacheKey) { - core.setOutput(constants_1.Outputs.CacheHit, false.toString()); + // `cache-hit` is intentionally not set to `false` here to preserve existing behavior + // See https://github.com/actions/cache/issues/1466 if (failOnCacheMiss) { throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`); } diff --git a/dist/restore/index.js b/dist/restore/index.js index 842eaa6..29b70b2 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -59415,7 +59415,8 @@ function restoreImpl(stateProvider, earlyExit) { const lookupOnly = utils.getInputAsBool(constants_1.Inputs.LookupOnly); const cacheKey = yield cache.restoreCache(cachePaths, primaryKey, restoreKeys, { lookupOnly: lookupOnly }, enableCrossOsArchive); if (!cacheKey) { - core.setOutput(constants_1.Outputs.CacheHit, false.toString()); + // `cache-hit` is intentionally not set to `false` here to preserve existing behavior + // See https://github.com/actions/cache/issues/1466 if (failOnCacheMiss) { throw new Error(`Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`); } diff --git a/package-lock.json b/package-lock.json index 73f4e6a..fb36255 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cache", - "version": "4.1.0", + "version": "4.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "cache", - "version": "4.1.0", + "version": "4.1.1", "license": "MIT", "dependencies": { "@actions/cache": "^3.2.3", diff --git a/package.json b/package.json index 08ba312..ce050e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cache", - "version": "4.1.0", + "version": "4.1.1", "private": true, "description": "Cache dependencies and build outputs", "main": "dist/restore/index.js", diff --git a/src/restoreImpl.ts b/src/restoreImpl.ts index bb302ac..54bef49 100644 --- a/src/restoreImpl.ts +++ b/src/restoreImpl.ts @@ -51,7 +51,9 @@ export async function restoreImpl( ); if (!cacheKey) { - core.setOutput(Outputs.CacheHit, false.toString()); + // `cache-hit` is intentionally not set to `false` here to preserve existing behavior + // See https://github.com/actions/cache/issues/1466 + if (failOnCacheMiss) { throw new Error( `Failed to restore cache entry. Exiting as fail-on-cache-miss is set. Input key: ${primaryKey}`