#60020·Node.js

具有 isolation=none 的测试运行程序在子进程中不起作用

作者: darrachequesne创建于 2025年9月26日更新于 2026年9月17日
标签child_processstaletest_runner

import { run } from "node:test"; import { spec } from "node:test/reporters"; import { PassThrough } from "node:stream"; import { availableParallelism } from "node:os"; import cluster from 'node:cluster';

const concurrency = availableParallelism(); let completed = 0;

if (cluster.isPrimary) { const mergedStream = new PassThrough({ objectMode: true });

cluster.on("message", (_worker, message) => { mergedStream.emit("data", message); });

mergedStream .compose(spec) .pipe(process.stdout);

for (let i = 1; i <= concurrency; i++) { cluster.fork({ SHARD_INDEX: i, SHARD_TOTAL: concurrency, }); }

cluster.on("exit", (worker, code, signal) => { if (++completed === concurrency) { mergedStream.end(); } }); } else { const stream = run({ isolation: "none", shard: { …