opencode/packages/core/test/fixture/held-stdio.cjs

36 lines
912 B
JavaScript

const { spawn } = require("node:child_process")
const fs = require("node:fs")
const mode = process.argv[2]
const child = spawn(
process.execPath,
[
"-e",
`
process.on("SIGTERM", () => {})
process.stdout.on("error", () => {})
process.stderr.on("error", () => {})
process.send("ready")
setTimeout(() => process.exit(0), 15000)
`,
],
{
detached: mode !== "mcp",
stdio: ["ignore", "inherit", "inherit", "ipc"],
},
)
fs.writeFileSync(process.argv[3], String(child.pid))
child.once("message", () => {
child.disconnect()
child.unref()
if (mode === "mcp") {
fs.writeSync(1, JSON.stringify({ jsonrpc: "2.0", method: "ready" }) + "\n")
process.stdin.resume().once("end", () => process.exit(0))
return
}
fs.writeSync(1, "foreground-out\n")
fs.writeSync(2, "foreground-err\n")
if (mode === "exit") process.exit(0)
setTimeout(() => process.exit(0), 15000)
})