From a838e6392a407bfffe5bc2db496b414ff1fe0d17 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 18 Feb 2020 10:57:15 -0700 Subject: [PATCH] [@kbn/optimizer] prevent error when all bundles are cached (#57871) --- .../basic_optimization.test.ts | 33 +++++++++++++++++-- .../optimizer/handle_optimizer_completion.ts | 5 +++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts index dda818875db2..b35788009dd9 100644 --- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts @@ -33,7 +33,7 @@ const MOCK_REPO_DIR = Path.resolve(TMP_DIR, 'mock_repo'); expect.addSnapshotSerializer(createAbsolutePathSerializer(MOCK_REPO_DIR)); -beforeEach(async () => { +beforeAll(async () => { await del(TMP_DIR); await cpy('**/*', MOCK_REPO_DIR, { cwd: MOCK_REPO_SRC, @@ -42,7 +42,7 @@ beforeEach(async () => { }); }); -afterEach(async () => { +afterAll(async () => { await del(TMP_DIR); }); @@ -153,3 +153,32 @@ it('builds expected bundles, saves bundle counts to metadata', async () => { ] `); }); + +it('uses cache on second run and exist cleanly', async () => { + const config = OptimizerConfig.create({ + repoRoot: MOCK_REPO_DIR, + pluginScanDirs: [Path.resolve(MOCK_REPO_DIR, 'plugins')], + maxWorkerCount: 1, + }); + + const msgs = await runOptimizer(config) + .pipe( + tap(state => { + if (state.event?.type === 'worker stdio') { + // eslint-disable-next-line no-console + console.log('worker', state.event.stream, state.event.chunk.toString('utf8')); + } + }), + toArray() + ) + .toPromise(); + + expect(msgs.map(m => m.state.phase)).toMatchInlineSnapshot(` + Array [ + "initializing", + "initializing", + "initializing", + "initialized", + ] + `); +}); diff --git a/packages/kbn-optimizer/src/optimizer/handle_optimizer_completion.ts b/packages/kbn-optimizer/src/optimizer/handle_optimizer_completion.ts index fe2fa320818a..9587902cc418 100644 --- a/packages/kbn-optimizer/src/optimizer/handle_optimizer_completion.ts +++ b/packages/kbn-optimizer/src/optimizer/handle_optimizer_completion.ts @@ -44,6 +44,11 @@ export function handleOptimizerCompletion(config: OptimizerConfig) { return; } + if (prevState?.phase === 'initialized' && prevState.onlineBundles.length === 0) { + // all bundles cached + return; + } + if (prevState?.phase === 'issue') { throw createFailError('webpack issue'); }