aaronsb_obsidian-mcp-plugin/tests
Aaron Bockelie d79d4b0666 fix(bridge): start under Claude Desktop's loader, not just node server.js
0.11.34 shipped a broken bridge: #243 gated startup on
`require.main === module`, but Claude Desktop runs the .mcpb with its
built-in Node ("Using built-in Node.js for MCP server") via a loader
that does NOT make server.js the main module. So main() never ran,
stdin was never read, the client's `initialize` went unanswered, and
Desktop timed out after 60s ("Request timed out", -32001) — the
extension "couldn't connect at all". (Local `node mcpb/server.js`
worked, which is why it passed review: that path makes
require.main === module true.)

Gate on the absence of Jest's worker env instead. main() then runs in
every real launch — system `node server.js` and Desktop's built-in
Node alike — while the require()-based test seam stays inert under
Jest. Reproduced via `node -e "require('./mcpb/server.js')"` (hangs
before, responds after).

Add tests/bridge-bootstrap.test.ts: spawns the bridge against a stub
HTTP server and asserts it answers `initialize` in BOTH launch shapes
(`node server.js` AND non-main require). The existing unit tests
`require()` the module — which by design skips main() — so they could
never catch a boot failure; this is that missing coverage. Verified
non-vacuous: reverting the guard fails the non-main case.

Refs #243. The GitHub 0.11.34 release .mcpb has this bug and must not
be promoted; ship the fix in 0.11.35.

Claude-Session: https://claude.ai/code/session_011yowKCMFCBp61DRBu5xQm4
2026-06-24 10:00:41 -05:00
..
__mocks__ fix(vault): Recurse listFiles into subfolders (#154) 2026-05-15 13:16:45 -05:00
fixtures harden(bases): runtime-computed-member escape test + scope scanner claim 2026-05-16 23:03:43 -05:00
security fix(tls): drop inert rejectUnauthorized:false default, clears scorecard Risk 2026-05-16 11:59:51 -05:00
validation test: Add comprehensive unit tests for input validation 2025-12-03 12:55:01 -06:00
bases-expression-evaluator.test.ts feat(bases): replace new Function with expression-eval (ADR-201) 2026-05-16 22:57:43 -05:00
bases-yaml.test.ts test(bases): address #182 review — accurate date-safety rationale + explicit divergences 2026-05-16 14:20:23 -05:00
bridge-bootstrap.test.ts fix(bridge): start under Claude Desktop's loader, not just node server.js 2026-06-24 10:00:41 -05:00
bridge-self-heal.test.ts fix(bridge): recover concurrent 404s; address review of #243 2026-06-24 01:32:51 -05:00
combine-inline-router.test.ts fix(vault): inline combine sourceFiles must match combined order 2026-05-18 12:20:48 -05:00
combine-inline.test.ts feat(vault): return combined content inline when destination is omitted 2026-05-18 08:10:12 -05:00
dataview-integration.test.ts fix(dataview): unwrap query() Result monad + bridge status shape (closes #216) 2026-06-05 17:37:21 -05:00
dispatch-param-guards.test.ts fix(dispatch): address PR #212 review findings 2026-05-25 08:31:37 -05:00
file-lock-edit-serialization.test.ts fix(edit): serialize concurrent edits to the same file (closes #139) 2026-05-18 22:43:16 -05:00
fuzzy-match.test.ts fix(mcp): stop debug route shadowing the GET /mcp SSE stream + two-row Levenshtein 2026-05-18 21:05:22 -05:00
graph-ignore-exclusion.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-node-title.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-search-traversal.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-search.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
graph-statistics-vault-wide.test.ts fix(graph): honor MCP ignore exclusions in graph traversal 2026-06-08 14:50:14 +02:00
list-files-recursive.test.ts fix(vault.list): Align paginated recursive sort with flat listFiles 2026-05-15 13:40:35 -05:00
mcp-server.test.ts fix: Mock fs module in tests to prevent certificate directory creation (v0.9.0a) 2025-08-12 10:52:39 -05:00
mcp-session-reinit.test.ts fix(mcp): client-driven session re-init via spec 404 (ADR-106, closes #190) 2026-05-18 22:37:23 -05:00
network-classifier.test.ts fix(network): address PR #211 self-review findings (ADR-107) 2026-05-24 17:06:16 -05:00
network-exposure-integration.test.ts feat(network): wire classifier into server, settings, UI (ADR-107) 2026-05-24 16:56:24 -05:00
patch-operations.test.ts feat: Implement structured patch targeting for headings, blocks, and frontmatter 2025-07-06 22:47:02 -05:00
read-only-mode.test.ts refactor: Remove concurrent mode toggle, simplify connection setup (ADR-100) 2026-03-14 23:13:35 -05:00
recursive-copy.test.ts fix: Eliminate all eslint any-type violations for Obsidian plugin review 2026-02-03 21:51:55 -06:00
search-tag-operator.test.ts feat: add tests for searches with the tag operator 2025-08-16 15:46:55 +01:00
setup.ts fix(lint): use window timers + window.console; drop forbidden eslint-disables (closes #226) 2026-06-09 11:13:48 -05:00
sse-socket-timeout.test.ts refactor(mcp): address review of #244 — document SSE backstop, test teardown 2026-06-24 02:00:33 -05:00
vault-read-fidelity.test.ts fix(formatter): emit verbatim content in default vault.read (PR #205 blocking review) 2026-05-19 00:38:29 -05:00