Files
openclaw/scripts/test-projects.mjs

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);
});