diff --git a/__tests__/actionUtils.test.ts b/__tests__/actionUtils.test.ts index 419881e..568b947 100644 --- a/__tests__/actionUtils.test.ts +++ b/__tests__/actionUtils.test.ts @@ -213,6 +213,36 @@ test("getInputAsArray handles empty lines correctly", () => { expect(actionUtils.getInputAsArray("foo")).toEqual(["bar", "baz"]); }); +test("getInputAsArray sorts files correctly", () => { + testUtils.setInput("foo", "bar\n!baz\nwaldo\nqux\nquux\ncorge\ngrault\ngarply"); + expect(actionUtils.getInputAsArray("foo")).toEqual([ + "!baz", + "bar", + "corge", + "garply", + "grault", + "quux", + "qux", + "waldo" + ]); +}); + +test("getInputAsArray removes spaces after ! at the beginning", () => { + testUtils.setInput( + "foo", + "! bar\n! baz\n! qux\n!quux\ncorge\ngrault! garply\n!\r\t waldo" + ); + expect(actionUtils.getInputAsArray("foo")).toEqual([ + "!bar", + "!baz", + "!quux", + "!qux", + "!waldo", + "corge", + "grault! garply" + ]); +}); + test("getInputAsInt returns undefined if input not set", () => { expect(actionUtils.getInputAsInt("undefined")).toBeUndefined(); }); diff --git a/__tests__/restore.test.ts b/__tests__/restore.test.ts index 446237c..9e68abe 100644 --- a/__tests__/restore.test.ts +++ b/__tests__/restore.test.ts @@ -97,7 +97,7 @@ test("restore with no key", async () => { test("restore with too many keys should fail", async () => { const path = "node_modules"; const key = "node-test"; - const restoreKeys = [...Array(20).keys()].map(x => x.toString()); + const restoreKeys = [...Array(20).keys()].map(x => x.toString()).sort(); testUtils.setInputs({ path: path, key, diff --git a/src/utils/actionUtils.ts b/src/utils/actionUtils.ts index a4d712d..df0e14f 100644 --- a/src/utils/actionUtils.ts +++ b/src/utils/actionUtils.ts @@ -60,8 +60,9 @@ export function getInputAsArray( return core .getInput(name, options) .split("\n") - .map(s => s.trim()) - .filter(x => x !== ""); + .map(s => s.replace(/^\!\s+/, '!').trim()) + .filter(x => x !== "") + .sort(); } export function getInputAsInt(