Prince9868's picture
Hackathon submission: Guardian OpenEnv
5743bc2
Raw
History Blame Contribute Delete
1.26 kB
import path from "node:path";
import { fileURLToPath } from "node:url";
import { rm, mkdir } from "node:fs/promises";
import { spawn } from "node:child_process";
import { build as esbuild } from "esbuild";
const packageDir = path.dirname(fileURLToPath(import.meta.url));
const apiDir = path.resolve(packageDir, "..");
const outDir = path.resolve(apiDir, ".test-dist");
const entryFile = path.resolve(apiDir, "tests/logic.test.ts");
const bundledFile = path.resolve(outDir, "logic.test.mjs");
await rm(outDir, { recursive: true, force: true });
await mkdir(outDir, { recursive: true });
await esbuild({
entryPoints: [entryFile],
outfile: bundledFile,
platform: "node",
bundle: true,
format: "esm",
sourcemap: "inline",
logLevel: "info",
banner: {
js: `import { createRequire as __bannerCrReq } from 'node:module';
globalThis.require = __bannerCrReq(import.meta.url);`,
},
});
await new Promise((resolve, reject) => {
const child = spawn(process.execPath, ["--test", bundledFile], {
stdio: "inherit",
cwd: apiDir,
});
child.on("exit", (code) => {
if (code === 0) {
resolve();
return;
}
reject(new Error(`API logic tests failed with exit code ${code ?? -1}`));
});
child.on("error", reject);
});