From 3f40aa78d697ead4410470d9f045bd724570207d Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 1 Jul 2022 12:59:29 +0200 Subject: [PATCH] Try to fix Windows tests --- .../samples/render-chunk-transform/_config.js | 8 +++++--- test/chunking-form/samples/render-chunk/_config.js | 6 ++---- test/form/samples/addon-functions/_config.js | 4 ++-- test/utils.js | 14 +++++++++++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/test/chunking-form/samples/render-chunk-transform/_config.js b/test/chunking-form/samples/render-chunk-transform/_config.js index c235688f2f9..046f28ecd6e 100644 --- a/test/chunking-form/samples/render-chunk-transform/_config.js +++ b/test/chunking-form/samples/render-chunk-transform/_config.js @@ -1,5 +1,6 @@ const assert = require('assert'); const path = require('path'); +const { replaceDirInStringifiedObject } = require('../../../utils'); module.exports = { description: 'replaces hashes when mutating chunk info in renderChunk', @@ -20,9 +21,10 @@ module.exports = { }, generateBundle(options, bundle) { const sanitizedBundle = JSON.parse( - JSON.stringify(bundle) - .replace(/(entry-\w+)-\w+\.js/g, (match, name) => `${name}.js`) - .replace(new RegExp(__dirname, 'g'), '**') + replaceDirInStringifiedObject(bundle, __dirname).replace( + /(entry-\w+)-\w+\.js/g, + (match, name) => `${name}.js` + ) ); for (const fileName of Object.keys(sanitizedBundle)) { delete sanitizedBundle[fileName].code; diff --git a/test/chunking-form/samples/render-chunk/_config.js b/test/chunking-form/samples/render-chunk/_config.js index a1c41d81e60..6ca7f743227 100644 --- a/test/chunking-form/samples/render-chunk/_config.js +++ b/test/chunking-form/samples/render-chunk/_config.js @@ -1,4 +1,5 @@ const assert = require('assert'); +const { replaceDirInStringifiedObject } = require('../../../utils'); module.exports = { description: @@ -15,10 +16,7 @@ module.exports = { assert.strictEqual(chunks[chunk.fileName], chunk); return ( code + - `\nconsole.log(${JSON.stringify(chunk, null, 2).replace( - new RegExp(__dirname, 'g'), - '**' - )});` + + `\nconsole.log(${replaceDirInStringifiedObject(chunk, __dirname)});` + `\nconsole.log('all chunks', ${JSON.stringify(Object.keys(chunks))})` + `\nconsole.log('referenced asset in renderChunk', '${this.getFileName( this.emitFile({ type: 'asset', name: 'test', source: 'test' }) diff --git a/test/form/samples/addon-functions/_config.js b/test/form/samples/addon-functions/_config.js index e121a203a3d..97f80fdc2c8 100644 --- a/test/form/samples/addon-functions/_config.js +++ b/test/form/samples/addon-functions/_config.js @@ -1,8 +1,8 @@ const assert = require('assert'); -const replaceDirname = new RegExp(__dirname, 'g'); +const { replaceDirInStringifiedObject } = require('../../../utils'); const assertChunkData = chunk => assert.strictEqual( - JSON.stringify({ ...chunk, fileName: undefined }, null, 2).replace(replaceDirname, '**'), + replaceDirInStringifiedObject({ ...chunk, fileName: undefined }, __dirname), '{\n' + ' "exports": [],\n' + ' "facadeModuleId": "**/main.js",\n' + diff --git a/test/utils.js b/test/utils.js index 0ac77d546ed..13ea3014c99 100644 --- a/test/utils.js +++ b/test/utils.js @@ -272,7 +272,7 @@ exports.writeAndSync = function writeAndSync(filePath, contents) { // Sometimes, watchers on MacOS do not seem to fire. In those cases, it helps // to write the same content again. This function returns a callback to stop // further updates. -function writeAndRetry(filePath, contents) { +exports.writeAndRetry = function writeAndRetry(filePath, contents) { let retries = 0; let updateRetryTimeout; @@ -287,6 +287,14 @@ function writeAndRetry(filePath, contents) { writeFile(); return () => clearTimeout(updateRetryTimeout); -} +}; -exports.writeAndRetry = writeAndRetry; +exports.replaceDirInStringifiedObject = function replaceDirInStringifiedObject(object, replaced) { + return JSON.stringify(object, null, 2).replace( + new RegExp( + JSON.stringify(JSON.stringify(replaced).slice(1, -1)).slice(1, -1) + '[/\\\\]*', + 'g' + ), + '**/' + ); +};