diff --git a/test/common/benchmark.js b/test/common/benchmark.js index 1fd4476ba55a35..f8952a8b9ad647 100644 --- a/test/common/benchmark.js +++ b/test/common/benchmark.js @@ -20,10 +20,27 @@ function runBenchmark(name, args, env) { const mergedEnv = Object.assign({}, process.env, env); - const child = fork(runjs, argv, { env: mergedEnv }); + const child = fork(runjs, argv, { env: mergedEnv, stdio: 'pipe' }); + child.stdout.setEncoding('utf8'); + + let stdout = ''; + child.stdout.on('data', (line) => { + stdout += line; + }); + child.on('exit', (code, signal) => { assert.strictEqual(code, 0); assert.strictEqual(signal, null); + // This bit makes sure that each benchmark file is being sent settings such + // that the benchmark file runs just one set of options. This helps keep the + // benchmark tests from taking a long time to run. Therefore, each benchmark + // file should result in three lines of output: a blank line, a line with + // the name of the benchmark file, and a line with the only results that we + // get from testing the benchmark file. + assert.ok( + /^(?:\n.+?\n.+?\n)+$/.test(stdout), + `benchmark file not running exactly one configuration in test: ${stdout}` + ); }); }