29 lines
1.4 KiB
JavaScript
29 lines
1.4 KiB
JavaScript
import { createRequire } from "node:module";
|
|
import { dirname, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { spawnSync } from "node:child_process";
|
|
|
|
// Use Vite's installed bundler, including pnpm layouts without a root esbuild bin.
|
|
const require = createRequire(import.meta.url);
|
|
const viteRequire = createRequire(require.resolve("vite/package.json"));
|
|
const { build } = viteRequire("esbuild");
|
|
const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
const suites = [
|
|
"src/core/threads/background-history.test.ts",
|
|
"src/core/api/stream-cursor-replay.test.ts",
|
|
"src/core/threads/stream-display.test.ts",
|
|
"src/core/threads/stream-recovery.test.ts",
|
|
"src/core/threads/stream-terminal-recovery.test.ts",
|
|
"src/core/threads/stream-reasoning-replay.test.ts",
|
|
"src/core/threads/project-metadata.test.ts",
|
|
];
|
|
const outdir = resolve(root, ".runtime/unit-tests/thread-history");
|
|
await build({
|
|
absWorkingDir: root, entryPoints: suites, outbase: "src/core", outdir,
|
|
bundle: true, platform: "node", format: "esm", define: { "import.meta.env": "{}" }, logLevel: "warning",
|
|
});
|
|
const files = suites.map((suite) => resolve(outdir, suite.replace("src/core/", "").replace(/\.ts$/, ".js")));
|
|
const result = spawnSync(process.execPath, ["--test", ...files], { cwd: root, stdio: "inherit" });
|
|
if (result.error) throw result.error;
|
|
process.exitCode = result.status ?? 1;
|