UNPKG

kizu

Version:

An easy-to-use, fast, and defensive Typescript/Javascript test runner designed to help you to write simple, readable, and maintainable tests.

36 lines 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.workerPool = workerPool; const os_1 = require("os"); const child_process_1 = require("child_process"); const toResult_1 = require("./lib/toResult"); const numCores = (0, os_1.cpus)().length; // will be the size of our worker pool let numWorkers = 0; let currentSpecFileIndex = 0; function workerPool(specFiles, addTestResults) { return new Promise((resolve, reject) => { function next() { if (currentSpecFileIndex >= specFiles.length && numWorkers === 0) resolve(); if (currentSpecFileIndex >= specFiles.length) return; if (numWorkers >= numCores) return; const file = specFiles[currentSpecFileIndex]; const [err, worker] = (0, toResult_1.toResult)(() => (0, child_process_1.fork)(file)); if (err) { return reject(new Error(`failed to create worker for ${file}`)); } numWorkers++; currentSpecFileIndex++; worker.on('close', () => { numWorkers--; next(); }); worker.on('message', (msg) => addTestResults(file, msg)); next(); } next(); }); } //# sourceMappingURL=workerPool.js.map