diff --git a/__tests__/saveOnly.test.ts b/__tests__/saveOnly.test.ts index b9bf246..a431e73 100644 --- a/__tests__/saveOnly.test.ts +++ b/__tests__/saveOnly.test.ts @@ -15,6 +15,10 @@ beforeAll(() => { return testUtils.getInput(name); }); + jest.spyOn(core, "getState").mockImplementation(name => { + return jest.requireActual("@actions/core").getState(name); + }); + jest.spyOn(actionUtils, "getInputAsArray").mockImplementation( (name, options) => { return jest diff --git a/__tests__/stateProvider.test.ts b/__tests__/stateProvider.test.ts index 39ca350..540e065 100644 --- a/__tests__/stateProvider.test.ts +++ b/__tests__/stateProvider.test.ts @@ -1,11 +1,12 @@ import * as core from "@actions/core"; -import { Events, RefKey, State } from "../src/constants"; +import { Events, Inputs, RefKey, State } from "../src/constants"; import { IStateProvider, NullStateProvider, StateProvider } from "../src/stateProvider"; +import * as testUtils from "../src/utils/testUtils"; jest.mock("@actions/core"); @@ -62,7 +63,7 @@ test("NullStateProvider saves outputs", async () => { const getInputMock = jest .spyOn(core, "getInput") - .mockImplementation(key => states.get(key) || ""); + .mockImplementation(key => testUtils.getInput(key)); const getStateMock = jest .spyOn(core, "getState") @@ -73,7 +74,7 @@ test("NullStateProvider saves outputs", async () => { const setOutputMock = jest .spyOn(core, "setOutput") .mockImplementation((key, value) => { - return jest.requireActual("@actions/core").setOutput(key, value); + states.set(key, value); }); const saveStateMock = jest @@ -83,14 +84,18 @@ test("NullStateProvider saves outputs", async () => { }); const cacheMatchedKey = "node-cache"; + const cachePrimaryKey = "primary-key"; const nullStateProvider: IStateProvider = new NullStateProvider(); - nullStateProvider.setState(State.CacheMatchedKey, "outputValue"); - nullStateProvider.setState(State.CachePrimaryKey, cacheMatchedKey); - nullStateProvider.getState("outputKey"); - nullStateProvider.getCacheState(); + testUtils.setInput(Inputs.Key, cachePrimaryKey); + nullStateProvider.setState(State.CachePrimaryKey, cachePrimaryKey); + nullStateProvider.setState(State.CacheMatchedKey, cacheMatchedKey); + const output1 = nullStateProvider.getState(State.CachePrimaryKey); + const output2 = nullStateProvider.getCacheState(); expect(getStateMock).toHaveBeenCalledTimes(0); - expect(getInputMock).toHaveBeenCalledTimes(2); + expect(getInputMock).toHaveBeenCalledTimes(1); + expect(output1).toBe("primary-key"); + expect(output2).toBe(undefined); expect(setOutputMock).toHaveBeenCalledTimes(2); expect(saveStateMock).toHaveBeenCalledTimes(0); }); diff --git a/dist/restore-only/index.js b/dist/restore-only/index.js index bb5d187..f47996e 100644 --- a/dist/restore-only/index.js +++ b/dist/restore-only/index.js @@ -9413,9 +9413,14 @@ class NullStateProvider extends StateProviderBase { [constants_1.State.CachePrimaryKey, constants_1.Outputs.CachePrimaryKey] ]); this.setState = (key, value) => { - core.setOutput(this.stateToOutputMap.get(key), value); + if (this.stateToOutputMap.has(key)) { + core.setOutput(this.stateToOutputMap.get(key), value); + } }; this.getState = (key) => { + if (!this.stateToInputMap.has(key)) { + return ""; + } return core.getInput(this.stateToInputMap.get(key)); }; } diff --git a/dist/restore/index.js b/dist/restore/index.js index c15e0f7..829985a 100644 --- a/dist/restore/index.js +++ b/dist/restore/index.js @@ -9413,9 +9413,14 @@ class NullStateProvider extends StateProviderBase { [constants_1.State.CachePrimaryKey, constants_1.Outputs.CachePrimaryKey] ]); this.setState = (key, value) => { - core.setOutput(this.stateToOutputMap.get(key), value); + if (this.stateToOutputMap.has(key)) { + core.setOutput(this.stateToOutputMap.get(key), value); + } }; this.getState = (key) => { + if (!this.stateToInputMap.has(key)) { + return ""; + } return core.getInput(this.stateToInputMap.get(key)); }; } diff --git a/dist/save-only/index.js b/dist/save-only/index.js index f9e20ed..a2be0c1 100644 --- a/dist/save-only/index.js +++ b/dist/save-only/index.js @@ -9469,9 +9469,14 @@ class NullStateProvider extends StateProviderBase { [constants_1.State.CachePrimaryKey, constants_1.Outputs.CachePrimaryKey] ]); this.setState = (key, value) => { - core.setOutput(this.stateToOutputMap.get(key), value); + if (this.stateToOutputMap.has(key)) { + core.setOutput(this.stateToOutputMap.get(key), value); + } }; this.getState = (key) => { + if (!this.stateToInputMap.has(key)) { + return ""; + } return core.getInput(this.stateToInputMap.get(key)); }; } diff --git a/dist/save/index.js b/dist/save/index.js index 065b00f..41bf2d6 100644 --- a/dist/save/index.js +++ b/dist/save/index.js @@ -9413,9 +9413,14 @@ class NullStateProvider extends StateProviderBase { [constants_1.State.CachePrimaryKey, constants_1.Outputs.CachePrimaryKey] ]); this.setState = (key, value) => { - core.setOutput(this.stateToOutputMap.get(key), value); + if (this.stateToOutputMap.has(key)) { + core.setOutput(this.stateToOutputMap.get(key), value); + } }; this.getState = (key) => { + if (!this.stateToInputMap.has(key)) { + return ""; + } return core.getInput(this.stateToInputMap.get(key)); }; } diff --git a/src/stateProvider.ts b/src/stateProvider.ts index a2de728..131ec69 100644 --- a/src/stateProvider.ts +++ b/src/stateProvider.ts @@ -43,10 +43,15 @@ export class NullStateProvider extends StateProviderBase { ]); setState = (key: string, value: string) => { - core.setOutput(this.stateToOutputMap.get(key) as string, value); + if (this.stateToOutputMap.has(key)) { + core.setOutput(this.stateToOutputMap.get(key) as string, value); + } }; getState = (key: string) => { + if (!this.stateToInputMap.has(key)) { + return ""; + } return core.getInput(this.stateToInputMap.get(key) as string); }; }