From 7a4f344e33a712c3d16d01bdb95be5ef34e8ab59 Mon Sep 17 00:00:00 2001 From: Dmitry Shibanov Date: Thu, 6 Apr 2023 12:02:34 +0200 Subject: [PATCH] Add warning for empty cache paths (#642) --- __tests__/cache-save.test.ts | 7 +++++++ dist/cache-save/index.js | 7 ++++++- src/cache-save.ts | 11 ++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/__tests__/cache-save.test.ts b/__tests__/cache-save.test.ts index 1cf7f89..26f7da2 100644 --- a/__tests__/cache-save.test.ts +++ b/__tests__/cache-save.test.ts @@ -87,6 +87,7 @@ describe('run', () => { describe('Validate unchanged cache is not saved', () => { it('should not save cache for pip', async () => { inputs['cache'] = 'pip'; + inputs['python-version'] = '3.10.0'; await run(); @@ -103,6 +104,7 @@ describe('run', () => { it('should not save cache for pipenv', async () => { inputs['cache'] = 'pipenv'; + inputs['python-version'] = '3.10.0'; await run(); @@ -121,6 +123,7 @@ describe('run', () => { describe('action saves the cache', () => { it('saves cache from pip', async () => { inputs['cache'] = 'pip'; + inputs['python-version'] = '3.10.0'; getStateSpy.mockImplementation((name: string) => { if (name === State.CACHE_MATCHED_KEY) { return requirementsHash; @@ -147,6 +150,7 @@ describe('run', () => { it('saves cache from pipenv', async () => { inputs['cache'] = 'pipenv'; + inputs['python-version'] = '3.10.0'; getStateSpy.mockImplementation((name: string) => { if (name === State.CACHE_MATCHED_KEY) { return pipFileLockHash; @@ -173,6 +177,7 @@ describe('run', () => { it('saves cache from poetry', async () => { inputs['cache'] = 'poetry'; + inputs['python-version'] = '3.10.0'; getStateSpy.mockImplementation((name: string) => { if (name === State.CACHE_MATCHED_KEY) { return poetryLockHash; @@ -199,6 +204,7 @@ describe('run', () => { it('saves with -1 cacheId , should not fail workflow', async () => { inputs['cache'] = 'poetry'; + inputs['python-version'] = '3.10.0'; getStateSpy.mockImplementation((name: string) => { if (name === State.STATE_CACHE_PRIMARY_KEY) { return poetryLockHash; @@ -227,6 +233,7 @@ describe('run', () => { it('saves with error from toolkit, should not fail the workflow', async () => { inputs['cache'] = 'npm'; + inputs['python-version'] = '3.10.0'; getStateSpy.mockImplementation((name: string) => { if (name === State.STATE_CACHE_PRIMARY_KEY) { return poetryLockHash; diff --git a/dist/cache-save/index.js b/dist/cache-save/index.js index cf6d38f..d5f534d 100644 --- a/dist/cache-save/index.js +++ b/dist/cache-save/index.js @@ -59628,7 +59628,12 @@ function run() { exports.run = run; function saveCache(packageManager) { return __awaiter(this, void 0, void 0, function* () { - const cachePaths = JSON.parse(core.getState(cache_distributor_1.State.CACHE_PATHS)); + const cachePathState = core.getState(cache_distributor_1.State.CACHE_PATHS); + if (!cachePathState) { + core.warning('Cache paths are empty. Please check the previous logs and make sure that the python version is specified'); + return; + } + const cachePaths = JSON.parse(cachePathState); core.debug(`paths for caching are ${cachePaths.join(', ')}`); if (!isCacheDirectoryExists(cachePaths)) { throw new Error(`Cache folder path is retrieved for ${packageManager} but doesn't exist on disk: ${cachePaths.join(', ')}`); diff --git a/src/cache-save.ts b/src/cache-save.ts index 711bccd..1017ef1 100644 --- a/src/cache-save.ts +++ b/src/cache-save.ts @@ -17,7 +17,16 @@ export async function run() { } async function saveCache(packageManager: string) { - const cachePaths = JSON.parse(core.getState(State.CACHE_PATHS)) as string[]; + const cachePathState = core.getState(State.CACHE_PATHS); + + if (!cachePathState) { + core.warning( + 'Cache paths are empty. Please check the previous logs and make sure that the python version is specified' + ); + return; + } + + const cachePaths = JSON.parse(cachePathState) as string[]; core.debug(`paths for caching are ${cachePaths.join(', ')}`);