From 537d15a9e6a2d64d139c345f33946cc2909fdf81 Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Sat, 31 Jan 2026 15:13:33 -0500 Subject: [PATCH] fix: proper cleanup of Metal GPU resources in tests Add test-preload.ts with global afterAll hook that ensures llama.cpp Metal resources are properly disposed before process exit, avoiding GGML_ASSERT failures. Co-Authored-By: Claude Opus 4.5 --- package.json | 2 +- src/test-preload.ts | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/test-preload.ts diff --git a/package.json b/package.json index 4ac978a..01d35f1 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "qmd": "./qmd" }, "scripts": { - "test": "bun test", + "test": "bun test --preload ./src/test-preload.ts", "qmd": "bun src/qmd.ts", "index": "bun src/qmd.ts index", "vector": "bun src/qmd.ts vector", diff --git a/src/test-preload.ts b/src/test-preload.ts new file mode 100644 index 0000000..afbd81f --- /dev/null +++ b/src/test-preload.ts @@ -0,0 +1,13 @@ +/** + * Test preload file to ensure proper cleanup of native resources. + * + * Uses bun:test afterAll to properly dispose of llama.cpp Metal + * resources before the process exits, avoiding GGML_ASSERT failures. + */ +import { afterAll } from "bun:test"; +import { disposeDefaultLlamaCpp } from "./llm"; + +// Global afterAll runs after all test files complete +afterAll(async () => { + await disposeDefaultLlamaCpp(); +});