| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import assert from "node:assert/strict";
- import { execFileSync, spawnSync } from "node:child_process";
- import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises";
- import { tmpdir } from "node:os";
- import { join } from "node:path";
- import test from "node:test";
- const verifier = new URL("../scripts/verify-generated-runtime.mjs", import.meta.url);
- const gitEnvironment = { ...process.env };
- delete gitEnvironment.GIT_INDEX_FILE;
- async function runtimeFixture() {
- const root = await mkdtemp(join(tmpdir(), "codex-app-server-bridge-runtime-test-"));
- await Promise.all([
- mkdir(join(root, "dist"), { recursive: true }),
- mkdir(join(root, "scripts"), { recursive: true }),
- mkdir(join(root, "src"), { recursive: true }),
- ]);
- await writeFile(join(root, "package.json"), JSON.stringify({
- private: true,
- scripts: { compile: "node scripts/compile.mjs" },
- }));
- await writeFile(
- join(root, "scripts", "compile.mjs"),
- "import { copyFile } from 'node:fs/promises';\nawait Promise.all([copyFile('src/cli.js', 'dist/cli.js'), copyFile('src/config.js', 'dist/config.js')]);\n",
- );
- await writeFile(join(root, "src", "cli.js"), "export const version = 1;\n");
- await writeFile(join(root, "src", "config.js"), "export const configured = true;\n");
- await writeFile(join(root, "dist", "cli.js"), "export const version = 1;\n");
- await writeFile(join(root, "dist", "config.js"), "export const configured = true;\n");
- execFileSync("git", ["init", "--quiet"], { cwd: root, env: gitEnvironment });
- execFileSync("git", ["add", "."], { cwd: root, env: gitEnvironment });
- return root;
- }
- test("generated-runtime verifier accepts a fresh staged baseline", async () => {
- const root = await runtimeFixture();
- try {
- const result = spawnSync(process.execPath, [verifier.pathname], {
- cwd: root,
- encoding: "utf8",
- env: gitEnvironment,
- });
- assert.equal(result.status, 0, result.stderr);
- assert.match(result.stdout, /Generated runtime is fresh/);
- } finally {
- await rm(root, { recursive: true, force: true });
- }
- });
- test("generated-runtime verifier rejects source and runtime drift", async () => {
- const root = await runtimeFixture();
- try {
- await writeFile(join(root, "src", "cli.js"), "export const version = 2;\n");
- const result = spawnSync(process.execPath, [verifier.pathname], {
- cwd: root,
- encoding: "utf8",
- env: gitEnvironment,
- });
- assert.notEqual(result.status, 0);
- assert.match(result.stderr, /generated runtime drift detected/i);
- assert.match(result.stderr, /cli\.js/);
- } finally {
- await rm(root, { recursive: true, force: true });
- }
- });
|