mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-04 16:36:42 +02:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import { spawn } from "node:child_process";
|
|
import { acquireLocalHeavyCheckLockSync } from "./lib/local-heavy-check-runtime.mjs";
|
|
import { resolvePnpmRunner } from "./pnpm-runner.mjs";
|
|
import { buildVitestArgs } from "./test-projects.test-support.mjs";
|
|
|
|
const vitestArgs = buildVitestArgs(process.argv.slice(2));
|
|
const pnpmRunner = resolvePnpmRunner({ pnpmArgs: vitestArgs });
|
|
const releaseLock = acquireLocalHeavyCheckLockSync({
|
|
cwd: process.cwd(),
|
|
env: process.env,
|
|
lockName: "test",
|
|
toolName: "test",
|
|
});
|
|
let lockReleased = false;
|
|
|
|
const releaseLockOnce = () => {
|
|
if (lockReleased) {
|
|
return;
|
|
}
|
|
lockReleased = true;
|
|
releaseLock();
|
|
};
|
|
|
|
const child = spawn(pnpmRunner.command, pnpmRunner.args, {
|
|
stdio: "inherit",
|
|
env: pnpmRunner.env ?? process.env,
|
|
shell: pnpmRunner.shell,
|
|
windowsVerbatimArguments: pnpmRunner.windowsVerbatimArguments,
|
|
});
|
|
|
|
child.on("exit", (code, signal) => {
|
|
releaseLockOnce();
|
|
if (signal) {
|
|
process.kill(process.pid, signal);
|
|
return;
|
|
}
|
|
process.exit(code ?? 1);
|
|
});
|
|
|
|
child.on("error", (error) => {
|
|
releaseLockOnce();
|
|
console.error(error);
|
|
process.exit(1);
|
|
});
|