diff --git a/__tests__/cache.test.itg.ts b/__tests__/cache.test.itg.ts index a32d4c6b..d9e48fcb 100644 --- a/__tests__/cache.test.itg.ts +++ b/__tests__/cache.test.itg.ts @@ -20,13 +20,27 @@ import os from 'os'; import path from 'path'; import {Cache} from '../src/cache'; +import {Util} from '../src/util'; const fixturesDir = path.join(__dirname, '.fixtures'); const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'cache-itg-')); describe('cache', () => { - it('github-repo', async () => { - const r = (Math.random() + 1).toString(36).substring(7); + it('caches github-repo', async () => { + const r = Util.generateRandomString(); + const htcName = `cache-test-github-repo-${r}`; + const c = new Cache({ + htcName: htcName, + htcVersion: `v1.0.0+${r}`, + baseCacheDir: path.join(tmpDir, '.cache-test'), + cacheFile: 'github-repo.json' + }); + expect(await c.save(path.join(fixturesDir, 'github-repo.json'), true)).not.toEqual(''); + expect(await c.find()).not.toEqual(''); + }); + + it('caches github-repo with post state', async () => { + const r = Util.generateRandomString(); const htcName = `cache-test-github-repo-${r}`; const c = new Cache({ htcName: htcName, @@ -35,6 +49,7 @@ describe('cache', () => { cacheFile: 'github-repo.json' }); expect(await c.save(path.join(fixturesDir, 'github-repo.json'))).not.toEqual(''); + expect(await Cache.post()).not.toBeNull(); expect(await c.find()).not.toEqual(''); }); }); diff --git a/src/cache.ts b/src/cache.ts index 71682637..9a25a1ab 100644 --- a/src/cache.ts +++ b/src/cache.ts @@ -55,7 +55,7 @@ export class Cache { } } - public async save(file: string): Promise { + public async save(file: string, skipState?: boolean): Promise { core.debug(`Cache.save ${file}`); const cachePath = this.copyToCache(file); @@ -63,14 +63,19 @@ export class Cache { core.debug(`Cache.save cached to hosted tool cache ${htcPath}`); if (!this.ghaNoCache && cache.isFeatureAvailable()) { - core.debug(`Cache.save sending ${this.ghaCacheKey} to post state`); - core.saveState( - Cache.POST_CACHE_KEY, - JSON.stringify({ - dir: this.cacheDir, - key: this.ghaCacheKey - } as CachePostState) - ); + if (skipState) { + core.debug(`Cache.save caching ${this.ghaCacheKey} to GitHub Actions cache`); + await cache.saveCache([this.cacheDir], this.ghaCacheKey); + } else { + core.debug(`Cache.save sending ${this.ghaCacheKey} to post state`); + core.saveState( + Cache.POST_CACHE_KEY, + JSON.stringify({ + dir: this.cacheDir, + key: this.ghaCacheKey + } as CachePostState) + ); + } } return cachePath;