2025-10-15 10:12:44 +03:00

39 lines
1.2 KiB
TypeScript

import * as cp from "child_process";
import * as fs from "fs";
import path from "path";
import which from "which";
import { main as convertFourslash } from "./convertFourslash.mts";
const failingTestsPath = path.join(import.meta.dirname, "failingTests.txt");
function main() {
const oldFailingTests = fs.readFileSync(failingTestsPath, "utf-8");
fs.writeFileSync(failingTestsPath, "", "utf-8");
convertFourslash();
const go = which.sync("go");
let testOutput: string;
try {
testOutput = cp.execFileSync(go, ["test", "./internal/fourslash/tests/gen"], { encoding: "utf-8" });
}
catch (error) {
testOutput = (error as { stdout: string; }).stdout as string;
}
const panicRegex = /^panic/m;
if (panicRegex.test(testOutput)) {
fs.writeFileSync(failingTestsPath, oldFailingTests, "utf-8");
throw new Error("Unrecovered panic detected in tests");
}
const failRegex = /--- FAIL: ([\S]+)/gm;
const failingTests: string[] = [];
let match;
while ((match = failRegex.exec(testOutput)) !== null) {
failingTests.push(match[1]);
}
fs.writeFileSync(failingTestsPath, failingTests.sort().join("\n") + "\n", "utf-8");
convertFourslash();
}
main();