From faaa3912ca1d75ce1c892389d8e13dc105443362 Mon Sep 17 00:00:00 2001 From: Danny Gleckler Date: Thu, 8 Feb 2024 20:52:30 -0500 Subject: [PATCH] Add save-always inpute/output test --- __tests__/restoreImpl.test.ts | 37 +++++++++++++++++++++++++++++++++++ src/utils/testUtils.ts | 4 ++++ 2 files changed, 41 insertions(+) diff --git a/__tests__/restoreImpl.test.ts b/__tests__/restoreImpl.test.ts index 130690c..bc40973 100644 --- a/__tests__/restoreImpl.test.ts +++ b/__tests__/restoreImpl.test.ts @@ -489,3 +489,40 @@ test("restore failure with earlyExit should call process exit", async () => { ); expect(processExitMock).toHaveBeenCalledWith(1); }); + +test("restore with save-always set", async () => { + jest.spyOn(actionUtils, "isGhes").mockImplementation(() => true); + const path = "node_modules"; + const key = "node-test"; + testUtils.setInputs({ + path: path, + key, + saveAlways: true + }); + + const setCacheHitOutputMock = jest.spyOn(core, "setOutput"); + const restoreCacheMock = jest + .spyOn(cache, "restoreCache") + .mockImplementationOnce(() => { + return Promise.resolve(undefined); + }); + + await restoreImpl(new StateProvider()); + + expect(restoreCacheMock).toHaveBeenCalledTimes(1); + expect(restoreCacheMock).toHaveBeenCalledWith( + [path], + key, + [], + { + lookupOnly: false + }, + false + ); + + expect(setCacheHitOutputMock).toHaveBeenCalledTimes(1); + expect(setCacheHitOutputMock).toHaveBeenCalledWith( + "save-always-d18d746b9", + "true" + ); +}); diff --git a/src/utils/testUtils.ts b/src/utils/testUtils.ts index ba0670b..84aeae9 100644 --- a/src/utils/testUtils.ts +++ b/src/utils/testUtils.ts @@ -16,6 +16,7 @@ interface CacheInput { enableCrossOsArchive?: boolean; failOnCacheMiss?: boolean; lookupOnly?: boolean; + saveAlways?: boolean; } export function setInputs(input: CacheInput): void { @@ -32,6 +33,8 @@ export function setInputs(input: CacheInput): void { setInput(Inputs.FailOnCacheMiss, input.failOnCacheMiss.toString()); input.lookupOnly !== undefined && setInput(Inputs.LookupOnly, input.lookupOnly.toString()); + input.saveAlways !== undefined && + setInput(Inputs.SaveAlways, input.saveAlways.toString()); } export function clearInputs(): void { @@ -42,4 +45,5 @@ export function clearInputs(): void { delete process.env[getInputName(Inputs.EnableCrossOsArchive)]; delete process.env[getInputName(Inputs.FailOnCacheMiss)]; delete process.env[getInputName(Inputs.LookupOnly)]; + delete process.env[getInputName(Inputs.SaveAlways)]; }