From 941e93d21aba6d57935ceb8380660304ff99fbcf Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Sat, 9 May 2020 17:06:38 +0200 Subject: [PATCH] Use advanced serialization (when available) for test worker communication --- lib/fork.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/fork.js b/lib/fork.js index f393011e5..088e9ed2c 100644 --- a/lib/fork.js +++ b/lib/fork.js @@ -14,6 +14,12 @@ const AVA_PATH = path.resolve(__dirname, '..'); const workerPath = require.resolve('./worker/subprocess'); +const useAdvanced = process.versions.node >= '12.16.0'; +// FIXME: Fix this in api.js or cli.js. +const serializeOptions = useAdvanced ? + options => JSON.parse(JSON.stringify(options)) : // Use JSON serialization to remove non-clonable values. + options => options; + module.exports = (file, options, execArgv = process.execArgv) => { let finished = false; @@ -34,7 +40,8 @@ module.exports = (file, options, execArgv = process.execArgv) => { cwd: options.projectDir, silent: true, env: {NODE_ENV: 'test', ...process.env, ...options.environmentVariables, AVA_PATH}, - execArgv + execArgv, + serialization: useAdvanced ? 'advanced' : 'json' }); subprocess.stdout.on('data', chunk => { @@ -66,7 +73,7 @@ module.exports = (file, options, execArgv = process.execArgv) => { } if (message.ava.type === 'ready-for-options') { - send({type: 'options', options}); + send({type: 'options', options: serializeOptions(options)}); return; }