Skip to content

Commit 51fafed

Browse files
committed
Use advanced serialization (when available) for test worker communication
1 parent ca8ea45 commit 51fafed

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

lib/fork.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ const AVA_PATH = path.resolve(__dirname, '..');
1414

1515
const workerPath = require.resolve('./worker/subprocess');
1616

17+
const useAdvanced = process.versions.node >= '12.16.0';
18+
// FIXME: Fix this in api.js or cli.js.
19+
const serializeOptions = useAdvanced ?
20+
options => JSON.parse(JSON.stringify(options)) : // Use JSON serialization to remove non-clonable values.
21+
options => options;
22+
1723
module.exports = (file, options, execArgv = process.execArgv) => {
1824
let finished = false;
1925

@@ -34,7 +40,8 @@ module.exports = (file, options, execArgv = process.execArgv) => {
3440
cwd: options.projectDir,
3541
silent: true,
3642
env: {NODE_ENV: 'test', ...process.env, ...options.environmentVariables, AVA_PATH},
37-
execArgv
43+
execArgv,
44+
serialization: useAdvanced ? 'advanced' : 'json'
3845
});
3946

4047
subprocess.stdout.on('data', chunk => {
@@ -66,7 +73,7 @@ module.exports = (file, options, execArgv = process.execArgv) => {
6673
}
6774

6875
if (message.ava.type === 'ready-for-options') {
69-
send({type: 'options', options});
76+
send({type: 'options', options: serializeOptions(options)});
7077
return;
7178
}
7279

0 commit comments

Comments
 (0)