AtlatestRepositorysigil-websocket

sigil-websocket / tree / test / integrationtest-native-websocket-connect-timeout.mjs

1import path from "node:path";
2import { fileURLToPath } from "node:url";
3import { spawn } from "node:child_process";
4
5const here = path.dirname(fileURLToPath(import.meta.url));
6const repo = path.resolve(here, "../..");
7const dependencyRoots = [
8 "sigil-stdlib", "sigil-socket", "sigil-tls", "sigil-crypto",
9].map((name) => path.join(repo, ".sigil", "deps", name, "src"));
10const args = [
11 "-L", path.join(repo, "build/dev/lib"),
12 ...dependencyRoots.flatMap((root) => ["-L", root]),
13 path.join(here, "native-connect-timeout-client.sgl"),
14];
15const child = spawn("sigil", args, {
16 cwd: repo, env: process.env, stdio: ["ignore", "pipe", "pipe"],
17});
18let stdout = "";
19let stderr = "";
20child.stdout.on("data", (chunk) => { stdout += chunk; });
21child.stderr.on("data", (chunk) => { stderr += chunk; });
22const watchdog = setTimeout(() => child.kill("SIGKILL"), 3000);
23const status = await new Promise((resolve) => child.on("close", resolve));
24clearTimeout(watchdog);
26if (status !== 0 || !stdout.includes("native-websocket-connect-timeout-ok")) {
27 throw new Error(`native timeout client failed (${status})\nstdout:\n${stdout}\nstderr:\n${stderr}`);
29console.log("native-websocket-connect-timeout-integration-ok");