fix(ultrawork): handle bun:sqlite import failure directly

Use the lazy bun:sqlite importer inside the deferred override microtask and keep the unavailable-runtime test on the rejected-import path.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-05 18:59:57 +09:00
parent f4a225b6cd
commit c537e840ee
2 changed files with 23 additions and 30 deletions
@@ -1,9 +1,9 @@
import { afterEach, beforeEach, describe, expect, mock, spyOn, test } from "bun:test"
import * as sharedModule from "../shared"
import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test"
import * as loggerModule from "../shared/logger"
import {
scheduleDeferredModelOverride,
__setBunSqliteImporterForTesting,
__resetBunSqliteImporterForTesting,
__setBunSqliteImporterForTesting,
} from "./ultrawork-db-model-override"
function flushMicrotasks(depth: number): Promise<void> {
@@ -25,22 +25,22 @@ describe("scheduleDeferredModelOverride bun:sqlite unavailable", () => {
let logCalls: Array<[string, Record<string, unknown>?]> = []
beforeEach(() => {
// Simulate non-Bun runtime (Node/Electron): bun:sqlite import returns null
__setBunSqliteImporterForTesting(async () => null)
spyOn(sharedModule, "log").mockImplementation((message: string, metadata?: Record<string, unknown>) => {
spyOn(loggerModule, "log").mockImplementation((message: string, metadata?: Record<string, unknown>) => {
logCalls.push([message, metadata])
})
})
afterEach(() => {
__resetBunSqliteImporterForTesting()
mock.restore()
logCalls = []
})
test("#given non-Bun runtime #when scheduleDeferredModelOverride is called #then it returns without throwing", async () => {
test("#given bun:sqlite import fails #when scheduleDeferredModelOverride is called #then it returns without throwing", async () => {
//#given
__setBunSqliteImporterForTesting(async () => {
throw new Error("bun:sqlite unavailable")
})
//#when
expect(() => {
scheduleDeferredModelOverride("msg_unavailable", {
@@ -52,9 +52,9 @@ describe("scheduleDeferredModelOverride bun:sqlite unavailable", () => {
await flushMicrotasks(5)
//#then
const logMessages = logCalls.map(([msg]) => msg)
expect(logMessages).toContain(
"[ultrawork-db-override] bun:sqlite unavailable (non-Bun runtime), skipping deferred override",
)
expect(logCalls).toContainEqual([
"[ultrawork-db-override] bun:sqlite unavailable (non-Bun runtime), skipping",
undefined,
])
})
})