Skip to content

Commit 0e93122

Browse files
committed
[Tests] handle predict-v8-randomness failures in node < 17 and node > 23
See matthewoestreich/predict-v8-randomness#2
1 parent b88316c commit 0e93122

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
"puppeteer": "^1.20.0",
6868
"request": "~2.87.0",
6969
"rimraf": "^2.7.1",
70+
"semver": "^6.3.1",
7071
"tape": "^5.9.0"
7172
},
7273
"license": "MIT",

test/integration/test-boundary-prediction.js

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,53 @@
33
var common = require('../common');
44
var assert = common.assert;
55
var FormData = require(common.dir.lib + '/form_data');
6-
var predictV8Randomness = require('predict-v8-randomness');
6+
var satisfies = require('semver').satisfies;
7+
var predictV8Randomness = satisfies(process.version, '^17 - ^23') && require('predict-v8-randomness'); // eslint-disable-line global-require
78

89
var initialSequence = [
910
Math.random(),
1011
Math.random(),
1112
Math.random(),
1213
Math.random(),
1314
];
14-
var predictor = new predictV8Randomness.Predictor(initialSequence);
15+
var predictor = predictV8Randomness && new predictV8Randomness.Predictor(initialSequence);
1516

16-
predictor.predictNext(24).then(function (next24RandomOutputs) {
17-
var predictedBoundary = next24RandomOutputs
18-
.map(function (v) {
19-
return Math.floor(v * 10).toString(16);
20-
})
21-
.join('');
17+
if (predictor) {
18+
predictor.predictNext(24).then(function (next24RandomOutputs) {
19+
var predictedBoundary = next24RandomOutputs
20+
.map(function (v) {
21+
return Math.floor(v * 10).toString(16);
22+
})
23+
.join('');
2224

23-
var boundaryIntro = '----------------------------';
25+
var boundaryIntro = '----------------------------';
2426

25-
var payload = 'zzz\r\n' + boundaryIntro + predictedBoundary + '\r\nContent-Disposition: form-data; name="is_admin"\r\n\r\ntrue\r\n' + boundaryIntro + predictedBoundary + '--\r\n';
27+
var payload = 'zzz\r\n' + boundaryIntro + predictedBoundary + '\r\nContent-Disposition: form-data; name="is_admin"\r\n\r\ntrue\r\n' + boundaryIntro + predictedBoundary + '--\r\n';
2628

27-
var FIELDS = {
28-
my_field: {
29-
value: payload,
30-
},
31-
};
29+
var FIELDS = {
30+
my_field: {
31+
value: payload,
32+
},
33+
};
3234

33-
// count total
34-
var fieldsPassed = Object.keys(FIELDS).length;
35+
// count total
36+
var fieldsPassed = Object.keys(FIELDS).length;
3537

36-
// prepare form-receiving http server
37-
var server = common.testFields(FIELDS, function (fields) {
38-
fieldsPassed = fields;
39-
});
38+
// prepare form-receiving http server
39+
var server = common.testFields(FIELDS, function (fields) {
40+
fieldsPassed = fields;
41+
});
4042

41-
server.listen(common.port, function () {
42-
var form = new FormData();
43+
server.listen(common.port, function () {
44+
var form = new FormData();
4345

44-
common.actions.populateFields(form, FIELDS);
46+
common.actions.populateFields(form, FIELDS);
4547

46-
common.actions.submit(form, server);
47-
});
48+
common.actions.submit(form, server);
49+
});
4850

49-
process.on('exit', function () {
50-
assert.strictEqual(fieldsPassed, 0);
51+
process.on('exit', function () {
52+
assert.strictEqual(fieldsPassed, 0);
53+
});
5154
});
52-
});
55+
}

0 commit comments

Comments
 (0)