singularity-forge/tests/live/run.ts
Mikael Hugo d73a73d7f3 chore: node 24 native APIs, import.meta.dirname, parsers rename, dep updates
- Replace fileURLToPath(import.meta.url) with import.meta.dirname across
  scripts and extensions
- Rename parsers-legacy.ts → parsers.ts
- Remove deleted plan/spec docs (cicd-pipeline)
- Update package.json engines and deps across workspace packages
- Update web/package-lock.json

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
2026-05-02 06:18:25 +02:00

51 lines
1.3 KiB
TypeScript

import { readdirSync } from "fs";
import { execFileSync } from "child_process";
import { join } from "path";
const __dirname = import.meta.dirname;
if ((process.env.SF_LIVE_TESTS || process.env.SF_LIVE_TESTS) !== "1") {
console.log("Skipping live tests (set SF_LIVE_TESTS=1 to enable)");
process.exit(0);
}
const testFiles = readdirSync(__dirname)
.filter((f) => f.startsWith("test-") && f.endsWith(".ts"))
.sort();
if (testFiles.length === 0) {
console.error("No live test files found");
process.exit(1);
}
let passed = 0;
let failed = 0;
let skipped = 0;
for (const file of testFiles) {
const filePath = join(__dirname, file);
const label = file.replace(/\.ts$/, "");
try {
execFileSync("node", ["--experimental-strip-types", filePath], {
encoding: "utf8",
stdio: "pipe",
timeout: 60_000,
});
console.log(` PASS ${label}`);
passed++;
} catch (err: any) {
const output = (err.stdout || "") + (err.stderr || "");
if (output.includes("SKIPPED")) {
console.log(` SKIP ${label}`);
skipped++;
} else {
console.error(` FAIL ${label}`);
if (err.stdout) console.error(err.stdout);
if (err.stderr) console.error(err.stderr);
failed++;
}
}
}
console.log(`\nLive tests: ${passed} passed, ${failed} failed, ${skipped} skipped`);
if (failed > 0) process.exit(1);