From 6b22503c88cdff1e375567d287011037efc93d75 Mon Sep 17 00:00:00 2001 From: Spencer Date: Wed, 27 May 2020 13:49:47 -0700 Subject: [PATCH] [7.x] [kbn/optimizer] exclude "cache" config from cache key, diff actually compared values (#67232) (#67542) Co-authored-by: spalger Co-authored-by: Elastic Machine --- .../kbn-optimizer/src/common/worker_config.ts | 2 +- .../src/integration_tests/bundle_cache.test.ts | 8 ++++---- .../src/optimizer/cache_keys.test.ts | 17 ++++++++--------- .../kbn-optimizer/src/optimizer/cache_keys.ts | 13 ++++++++++--- 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/packages/kbn-optimizer/src/common/worker_config.ts b/packages/kbn-optimizer/src/common/worker_config.ts index 3fb1880a7371..a1ab51ee97c2 100644 --- a/packages/kbn-optimizer/src/common/worker_config.ts +++ b/packages/kbn-optimizer/src/common/worker_config.ts @@ -31,7 +31,7 @@ export interface WorkerConfig { readonly optimizerCacheKey: unknown; } -export type CacheableWorkerConfig = Omit; +export type CacheableWorkerConfig = Omit; export function parseWorkerConfig(json: string): WorkerConfig { try { diff --git a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts index 14ff320173d6..39064c64062e 100644 --- a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts @@ -208,8 +208,8 @@ it('emits "bundle not cached" event when optimizerCacheKey is outdated, includes "diff": "- Expected + Received - - old - + optimizerCacheKey", + - \\"old\\" + + \\"optimizerCacheKey\\"", "reason": "optimizer cache key mismatch", "type": "bundle not cached", }, @@ -291,8 +291,8 @@ it('emits "bundle not cached" event when cacheKey is outdated', async () => { "diff": "- Expected + Received - - old - + new", + - \\"old\\" + + \\"new\\"", "reason": "cache key mismatch", "type": "bundle not cached", }, diff --git a/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts b/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts index d5b0b8491f72..9d7f1709506f 100644 --- a/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts +++ b/packages/kbn-optimizer/src/optimizer/cache_keys.test.ts @@ -100,7 +100,6 @@ describe('getOptimizerCacheKey()', () => { }, "workerConfig": Object { "browserslistEnv": "dev", - "cache": true, "dist": false, "optimizerCacheKey": "♻", "repoRoot": , @@ -134,13 +133,13 @@ describe('diffCacheKey()', () => { "- Expected + Received -  Array [ +  [  \\"1\\",  \\"2\\", -  Object { - - \\"a\\": \\"b\\", - + \\"b\\": \\"a\\", -  }, +  { + - \\"a\\": \\"b\\" + + \\"b\\": \\"a\\" +  }  ]" `); expect( @@ -158,11 +157,11 @@ describe('diffCacheKey()', () => { "- Expected + Received -  Object { +  { - \\"a\\": \\"1\\", - - \\"b\\": \\"1\\", + - \\"b\\": \\"1\\" + \\"a\\": \\"2\\", - + \\"b\\": \\"2\\", + + \\"b\\": \\"2\\"  }" `); }); diff --git a/packages/kbn-optimizer/src/optimizer/cache_keys.ts b/packages/kbn-optimizer/src/optimizer/cache_keys.ts index e024af125312..2766f6d63702 100644 --- a/packages/kbn-optimizer/src/optimizer/cache_keys.ts +++ b/packages/kbn-optimizer/src/optimizer/cache_keys.ts @@ -48,11 +48,18 @@ function omit(obj: T, keys: K[]): Omit { } export function diffCacheKey(expected?: unknown, actual?: unknown) { - if (jsonStable(expected) === jsonStable(actual)) { + const expectedJson = jsonStable(expected, { + space: ' ', + }); + const actualJson = jsonStable(actual, { + space: ' ', + }); + + if (expectedJson === actualJson) { return; } - return reformatJestDiff(jestDiff(expected, actual)); + return reformatJestDiff(jestDiff(expectedJson, actualJson)); } export function reformatJestDiff(diff: string | null) { @@ -178,7 +185,7 @@ export async function getOptimizerCacheKey(config: OptimizerConfig) { bootstrap, deletedPaths, modifiedTimes: {} as Record, - workerConfig: omit(config.getWorkerConfig('♻'), ['watch', 'profileWebpack']), + workerConfig: omit(config.getWorkerConfig('♻'), ['watch', 'profileWebpack', 'cache']), }; const mtimes = await getMtimes(modifiedPaths);