fix(engine): lazy-promisify execFile in psnr so partial child_process mocks don't crash at import

This commit is contained in:
Vance Ingalls
2026-07-23 17:57:15 -07:00
parent 92ffd0476d
commit 4889b779c9
2 changed files with 19 additions and 2 deletions
+14
View File
@@ -123,6 +123,20 @@ vi.mock("../telemetry/config.js", () => ({
configState.cache = { ...configState.disk };
return { ...configState.disk };
}),
recordRecentRender: vi.fn((id: string, ok: boolean) => {
// Mirrors the real ring update (readConfigFresh → append, cap 5 → write)
// against the mock's disk state, so a render's recent-renders write is
// modeled like every other config mutation here. Fixed timestamp keeps it
// deterministic (tests never assert on `at`).
const disk = configState.disk as Record<string, unknown>;
const ring = [
...((disk.recentRenders as unknown[]) ?? []),
{ id, at: "2026-01-01T00:00:00Z", ok },
];
const next = { ...disk, recentRenders: ring.slice(-5) };
configState.disk = next;
configState.cache = { ...next };
}),
writeConfig: vi.fn((config: Record<string, unknown>) => {
configState.writeConfigCalls.push({ ...config });
if (configState.failWrites > 0) {
+5 -2
View File
@@ -5,14 +5,17 @@ import { join } from "node:path";
import { promisify } from "node:util";
import { getFfmpegBinary } from "./ffmpegBinaries.js";
const execFileP = promisify(execFile);
/**
* PSNR (average, dB) between two same-dimension encoded images via ffmpeg.
* Infinity means bit-identical pixels. Single source of truth for every
* drawElement self-verify comparison (streaming drain + parallel disk path).
*/
export async function psnrDb(a: Buffer, b: Buffer): Promise<number> {
// promisify(execFile) lazily, not at module load: this module is in the
// engine's parallel-capture import chain, and a top-level call to a builtin
// crashes any downstream test that partially mocks node:child_process
// without an execFile export (vitest surfaces it as a load-time error).
const execFileP = promisify(execFile);
const dir = await mkdtemp(join(tmpdir(), "hf-de-verify-"));
try {
const pa = join(dir, "a.jpg");