summaryrefslogtreecommitdiff
path: root/test/pummel
diff options
context:
space:
mode:
Diffstat (limited to 'test/pummel')
-rw-r--r--test/pummel/test-hash-seed.js37
1 files changed, 16 insertions, 21 deletions
diff --git a/test/pummel/test-hash-seed.js b/test/pummel/test-hash-seed.js
index 2b7f13593a..30edca32f6 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);