From a0ed056f6191482f8a087726e66ade9cefb647a4 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 12 Sep 2017 07:56:07 -0400 Subject: [node] Shuffle seed support --- platform/node/test/render.test.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/platform/node/test/render.test.js b/platform/node/test/render.test.js index ce549c1e27..b4933ce59e 100644 --- a/platform/node/test/render.test.js +++ b/platform/node/test/render.test.js @@ -7,6 +7,19 @@ const ignores = require('./ignores.json'); let tests; let shuffle = false; let recycleMap = false; +let seed; + +// https://stackoverflow.com/a/1349426/229714 +function makeHash() { + const array = []; + const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + + for (let i = 0; i < 10; ++i) + array.push(possible.charAt(Math.floor(Math.random() * possible.length))); + + // join array elements without commas. + return array.join(''); +} function checkParameter(param) { const index = tests.indexOf(param); @@ -16,10 +29,23 @@ function checkParameter(param) { return true; } +function checkValueParameter(defaultValue, param) { + const index = tests.findIndex((elem) => { return String(elem).startsWith(param); }); + if (index === -1) + return defaultValue; + + const split = String(tests.splice(index, 1)).split('='); + if (split.length !== 2) + return defaultValue; + + return split[1]; +} + if (process.argv[1] === __filename && process.argv.length > 2) { tests = process.argv.slice(2).filter((value, index, self) => { return self.indexOf(value) === index; }); shuffle = checkParameter('--shuffle'); + seed = checkValueParameter(makeHash(), '--seed'); recycleMap = checkParameter('--recycle-map'); } -suite.run('native', {tests, ignores, shuffle, recycleMap}, suiteImplementation); +suite.run('native', { tests, ignores, shuffle, seed, recycleMap }, suiteImplementation); -- cgit v1.2.1