diff --git a/test/pummel/test-hash-seed.js b/test/pummel/test-hash-seed.js index 2b7f13593a9aa4..30edca32f6f852 100644 --- a/test/pummel/test-hash-seed.js +++ b/test/pummel/test-hash-seed.js @@ -1,31 +1,26 @@ 'use strict'; // Check that spawn child doesn't create duplicated entries -require('../common'); -const Countdown = require('../common/countdown'); -const REPETITIONS = 2; +const common = require('../common'); +const kRepetitions = 2; const assert = require('assert'); const fixtures = require('../common/fixtures'); -const { spawn } = require('child_process'); +const { promisify, debuglog } = require('util'); +const debug = debuglog('test'); + +const { execFile } = require('child_process'); +const execFilePromise = promisify(execFile); const targetScript = fixtures.path('guess-hash-seed.js'); -const seeds = []; -const requiredCallback = () => { - console.log(`Seeds: ${seeds}`); +const requiredCallback = common.mustCall((results) => { + const seeds = results.map((val) => val.stdout.trim()); + debug(`Seeds: ${seeds}`); assert.strictEqual(new Set(seeds).size, seeds.length); - assert.strictEqual(seeds.length, REPETITIONS); -}; - -const countdown = new Countdown(REPETITIONS, requiredCallback); + assert.strictEqual(seeds.length, kRepetitions); +}); -for (let i = 0; i < REPETITIONS; ++i) { - let result = ''; - const subprocess = spawn(process.execPath, [targetScript]); - subprocess.stdout.setEncoding('utf8'); - subprocess.stdout.on('data', (data) => { result += data; }); +const generateSeed = () => execFilePromise(process.execPath, [targetScript]); +const subprocesses = [...new Array(kRepetitions)].map(generateSeed); - subprocess.on('exit', () => { - seeds.push(result.trim()); - countdown.dec(); - }); -} +Promise.all(subprocesses) + .then(requiredCallback);