49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { describe, expect, it } from "vitest";
|
|
import {
|
|
generateSandboxMatrixDocument,
|
|
renderSandboxMatrixMarkdown,
|
|
stringifySandboxMatrixJson,
|
|
} from "@main/services/sandbox/sandboxMatrix";
|
|
|
|
const testFileDir = path.dirname(fileURLToPath(import.meta.url));
|
|
const projectRoot = path.resolve(testFileDir, "..", "..");
|
|
const repoRoot = path.resolve(projectRoot, "..", "..");
|
|
|
|
const docsDir = path.join(repoRoot, "docs");
|
|
const jsonPath = path.join(docsDir, "sandbox-matrix.generated.json");
|
|
const mdPath = path.join(docsDir, "sandbox-matrix.generated.md");
|
|
|
|
function ensureDir(dir: string): void {
|
|
if (!fs.existsSync(dir)) {
|
|
fs.mkdirSync(dir, { recursive: true });
|
|
}
|
|
}
|
|
|
|
describe("sandbox matrix artifact consistency", () => {
|
|
it("should generate deterministic matrix artifacts and keep repository baseline in sync", () => {
|
|
const doc = generateSandboxMatrixDocument();
|
|
const generatedJson = stringifySandboxMatrixJson(doc);
|
|
const generatedMd = renderSandboxMatrixMarkdown(doc);
|
|
const writeMode = process.env.SANDBOX_MATRIX_WRITE === "1";
|
|
|
|
if (writeMode) {
|
|
ensureDir(docsDir);
|
|
fs.writeFileSync(jsonPath, generatedJson, "utf8");
|
|
fs.writeFileSync(mdPath, generatedMd, "utf8");
|
|
}
|
|
|
|
expect(fs.existsSync(jsonPath)).toBe(true);
|
|
expect(fs.existsSync(mdPath)).toBe(true);
|
|
|
|
const baselineJson = fs.readFileSync(jsonPath, "utf8");
|
|
const baselineMd = fs.readFileSync(mdPath, "utf8");
|
|
|
|
expect(baselineJson).toBe(generatedJson);
|
|
expect(baselineMd).toBe(generatedMd);
|
|
});
|
|
});
|
|
|