Files
node/test/parallel/test-runner-seeded-generator.js
T
Daijiro Wachi b3042c7b68 test_runner: remove unused shuffleArrayWithSeed
shuffleArrayWithSeed was introduced along with test order
randomization but was never called: the feature picks a random
pending subtest at dequeue time using createSeededGenerator
directly. Remove the dead helper and its export, and add direct
unit coverage for createSeededGenerator's deterministic contract.

Signed-off-by: Daijiro Wachi <daijiro.wachi@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/63847
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Jacob Smith <jacob@frende.me>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2026-06-13 09:02:10 +00:00

34 lines
1.2 KiB
JavaScript

// Flags: --expose-internals
'use strict';
require('../common');
const assert = require('node:assert');
const { createSeededGenerator, kMaxRandomSeed } = require('internal/test_runner/utils');
function sequence(seed, length = 10) {
const random = createSeededGenerator(seed);
const values = [];
for (let i = 0; i < length; i++) {
values.push(random());
}
return values;
}
// The same seed must always produce the same sequence so that
// --test-random-seed reproduces a randomized test order across runs.
assert.deepStrictEqual(sequence(0), sequence(0));
assert.deepStrictEqual(sequence(12345), sequence(12345));
assert.deepStrictEqual(sequence(kMaxRandomSeed), sequence(kMaxRandomSeed));
// Different seeds must produce different sequences.
assert.notDeepStrictEqual(sequence(11111), sequence(22222));
assert.notDeepStrictEqual(sequence(0), sequence(1));
// Seeds are coerced to uint32, matching the range accepted by
// --test-random-seed.
assert.deepStrictEqual(sequence(1), sequence(1 + 2 ** 32));
// All generated values must fall in [0, 1).
for (const value of sequence(98765, 1000)) {
assert.ok(value >= 0 && value < 1, `value ${value} out of range`);
}