mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 04:12:10 +03:00
createSqliteNativeError() in bin/cli/sqlite.mjs only recognized the ABI-mismatch native error class (NODE_MODULE_VERSION/ERR_DLOPEN_FAILED). It silently passed through the 'Could not locate the bindings file' class thrown by the bindings package when the better-sqlite3 native addon was never built/downloaded - the exact case hit by 'npx omniroute reset-password', since npx runs a fresh ephemeral install that never builds the addon. Users got a raw multi-line path dump instead of guidance. Widen the condition to also match 'Could not locate the bindings file', MODULE_NOT_FOUND, and "Cannot find module 'better-sqlite3'", and point users at the existing self-heal command `omniroute runtime repair`, same as the ABI-mismatch branch already does. Regression test: tests/unit/cli-sqlite-bindings-not-found-7868.test.ts - RED against the reporter's exact error text before the fix, GREEN after.
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { createSqliteNativeError } from "../../bin/cli/sqlite.mjs";
|
|
|
|
test("#7868: createSqliteNativeError() gives actionable guidance for a missing-bindings-file error", () => {
|
|
const rawBindingsError = new Error(
|
|
"Could not locate the bindings file. Tried:\n" +
|
|
" → /Users/agent_user/.npm/_npx/44b85dff014d9ceb/node_modules/better-sqlite3/build/better_sqlite3.node\n" +
|
|
" → /Users/agent_user/.npm/_npx/44b85dff014d9ceb/node_modules/better-sqlite3/build/Release/better_sqlite3.node\n" +
|
|
" → /Users/agent_user/.npm/_npx/44b85dff014d9ceb/node_modules/better-sqlite3/lib/binding/node-v147-darwin-arm64/better_sqlite3.node"
|
|
);
|
|
|
|
const translated = createSqliteNativeError(rawBindingsError);
|
|
|
|
assert.notStrictEqual(
|
|
translated.message,
|
|
rawBindingsError.message,
|
|
"createSqliteNativeError() passed the raw 'Could not locate the bindings file' dump through " +
|
|
"unchanged instead of translating it into actionable guidance (#7868)"
|
|
);
|
|
assert.match(
|
|
translated.message,
|
|
/runtime repair/i,
|
|
"translated error should point the user at the existing self-heal command " +
|
|
"(`omniroute runtime repair`), same as the ABI-mismatch branch already does"
|
|
);
|
|
assert.ok(
|
|
!translated.message.includes("Tried:"),
|
|
"a raw path dump reaching the user is itself a signal the fix regressed"
|
|
);
|
|
});
|