From fbbe46e854a19f319e4ab789bc181c6e96411d6e Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 7 Oct 2026 03:55:52 +0000 Subject: [PATCH] test: add error handling test for SumEngine evaluate block Co-authored-by: Horizontal42 <75383519+Horizontal42@users.noreply.github.com> --- src/engine/engine.test.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/engine/engine.test.ts b/src/engine/engine.test.ts index e8d8454..72d0f50 100644 --- a/src/engine/engine.test.ts +++ b/src/engine/engine.test.ts @@ -1,8 +1,9 @@ -import { describe, it, expect, beforeAll } from "vitest"; +import { describe, it, expect, beforeAll, vi } from "vitest"; import { SumEngine } from "./index"; import { qty, EvalError, XRefError } from "./types"; import type { XRefResolution, EvalCtx } from "./evaluator"; import { evaluate } from "./evaluator"; +import * as evaluator from "./evaluator"; import { formatValue } from "./formatter"; let eng: SumEngine; @@ -451,4 +452,17 @@ describe("evaluation errors", () => { } as unknown as EvalCtx; expect(() => evaluate({ k: "xref", sheet: "Sheet", key: "key" }, ctx)).toThrowError(XRefError); }); + + it("catches and handles arbitrary errors in evaluateDocument", () => { + // Spy on evaluator.evaluate and force an arbitrary error + const spy = vi.spyOn(evaluator, "evaluate").mockImplementation(() => { + throw new Error("Forced execution anomaly"); + }); + + const results = eng.evaluateDocument("1 + 1"); + expect(results).toHaveLength(1); + expect(results[0].error).toBe("Forced execution anomaly"); + + spy.mockRestore(); + }); });