mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
import { readdir } from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { spawn } from "node:child_process";
|
|
|
|
const TEST_ROOT = path.resolve(process.cwd(), "tests");
|
|
const EXCLUDED_TESTS = new Set(["triviumdb-poc.mjs"]);
|
|
|
|
function toPosixPath(filePath) {
|
|
return filePath.split(path.sep).join("/");
|
|
}
|
|
|
|
async function collectStableTests() {
|
|
const entries = await readdir(TEST_ROOT, { withFileTypes: true });
|
|
return entries
|
|
.filter((entry) => entry.isFile() && entry.name.endsWith(".mjs"))
|
|
.map((entry) => entry.name)
|
|
.filter((name) => !EXCLUDED_TESTS.has(name))
|
|
.sort((left, right) => left.localeCompare(right, "en"));
|
|
}
|
|
|
|
async function runNodeFile(relativePath) {
|
|
return await new Promise((resolve, reject) => {
|
|
const child = spawn(process.execPath, [relativePath], {
|
|
cwd: process.cwd(),
|
|
stdio: "inherit",
|
|
windowsHide: true,
|
|
});
|
|
|
|
child.on("error", reject);
|
|
child.on("exit", (code, signal) => {
|
|
if (signal) {
|
|
reject(new Error(`${relativePath} terminated by signal ${signal}`));
|
|
return;
|
|
}
|
|
if (code !== 0) {
|
|
reject(new Error(`${relativePath} exited with code ${code}`));
|
|
return;
|
|
}
|
|
resolve();
|
|
});
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
const tests = await collectStableTests();
|
|
console.log(
|
|
`[ST-BME][test-suite] running ${tests.length} stable tests (excluded: ${Array.from(EXCLUDED_TESTS).join(", ")})`,
|
|
);
|
|
|
|
for (const testName of tests) {
|
|
const relativePath = toPosixPath(path.join("tests", testName));
|
|
console.log(`[ST-BME][test-suite] -> ${relativePath}`);
|
|
await runNodeFile(relativePath);
|
|
}
|
|
|
|
console.log("[ST-BME][test-suite] all stable tests passed");
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(
|
|
"[ST-BME][test-suite] failed:",
|
|
error instanceof Error ? error.message : String(error),
|
|
);
|
|
process.exitCode = 1;
|
|
});
|