electron/script/split-tests.js
Samuel Attard c2c3673e8a
build: fix linux tests (#42496)
* build: use runuser for electron spec runner

* chown

* run tests in priv

* fixed

* build: setup testing on arm for GHA

* no build-tools for test

* start xvfb for the right user

* no more gn-build-type

* debug env

* ue xvfb-run

* use 8 core for node tests

* build: do test sharding on linux

* fix: disable hung node test

* build: index splits are hard

* build: use --init to reap children

* allow write junit

* use custom xvfb wrapper

* pipefail

* dont kill xvfb, its already dead

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-06-14 10:57:28 -05:00

32 lines
769 B
JavaScript

const fs = require('node:fs');
const glob = require('glob');
const currentShard = parseInt(process.argv[2], 10);
const shardCount = parseInt(process.argv[3], 10);
const specFiles = glob.sync('spec/*-spec.ts');
const buckets = [];
for (let i = 0; i < shardCount; i++) {
buckets.push([]);
}
const testsInSpecFile = Object.create(null);
for (const specFile of specFiles) {
const testContent = fs.readFileSync(specFile, 'utf8');
testsInSpecFile[specFile] = testContent.split('it(').length;
}
specFiles.sort((a, b) => {
return testsInSpecFile[b] - testsInSpecFile[a];
});
let shard = 0;
for (const specFile of specFiles) {
buckets[shard].push(specFile);
shard++;
if (shard === shardCount) shard = 0;
}
console.log(buckets[currentShard - 1].join(' '));