12345678910111213141516171819202122232425262728293031323334 |
- const glob = require('glob');
- const fs = require('node:fs');
- const path = require('node:path');
- 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(path.normalize(specFile));
- shard++;
- if (shard === shardCount) shard = 0;
- }
- console.log(buckets[currentShard - 1].join(' '));
|