Merge pull request #602 from fxstein/fix/mcp-production-mode-test-leak
fix(mcp): do not enable production mode at module import time
This commit is contained in:
commit
a2fcac8225
@ -101,9 +101,12 @@ import {
|
||||
} from "../collections.js";
|
||||
import { getEmbeddedQmdSkillContent, getEmbeddedQmdSkillFiles } from "../embedded-skills.js";
|
||||
|
||||
// Enable production mode - allows using default database path
|
||||
// Tests must set INDEX_PATH or use createStore() with explicit path
|
||||
enableProductionMode();
|
||||
// NOTE: enableProductionMode() is intentionally NOT called at module scope here.
|
||||
// Importing this module for its exports (e.g. buildEditorUri, termLink from
|
||||
// test/cli.test.ts) must not flip the global production flag, as that leaks
|
||||
// into unrelated tests that rely on the default (development) database path
|
||||
// resolution. The flag is flipped inside the CLI's main-module guard below so
|
||||
// it only fires when qmd is actually invoked as a script.
|
||||
|
||||
// =============================================================================
|
||||
// Store/DB lifecycle (no legacy singletons in store.ts)
|
||||
@ -2821,6 +2824,11 @@ const isMain = argv1 === __filename
|
||||
|| argv1?.endsWith("/qmd.js")
|
||||
|| (argv1 != null && realpathSync(argv1) === __filename);
|
||||
if (isMain) {
|
||||
// Flip to production mode only when this module is executed as the CLI
|
||||
// entrypoint, not when imported for its exports. Tests must set INDEX_PATH
|
||||
// or use createStore() with an explicit path.
|
||||
enableProductionMode();
|
||||
|
||||
const cli = parseCLI();
|
||||
|
||||
if (cli.values.version) {
|
||||
|
||||
@ -32,8 +32,6 @@ import {
|
||||
import { getConfigPath } from "../collections.js";
|
||||
import { enableProductionMode } from "../store.js";
|
||||
|
||||
enableProductionMode();
|
||||
|
||||
// =============================================================================
|
||||
// Types for structured content
|
||||
// =============================================================================
|
||||
@ -541,6 +539,12 @@ Intent-aware lex (C++ performance, not sports):
|
||||
// =============================================================================
|
||||
|
||||
export async function startMcpServer(): Promise<void> {
|
||||
// Opt into production mode when the MCP server is actually started, not
|
||||
// when this module is merely imported for its exports. Importing the module
|
||||
// at the top level flipped the global production flag and broke test
|
||||
// isolation for downstream suites that expect the default (development)
|
||||
// database path behaviour.
|
||||
enableProductionMode();
|
||||
const configPath = getConfigPath();
|
||||
const store = await createStore({
|
||||
dbPath: getDefaultDbPath(),
|
||||
@ -566,6 +570,10 @@ export type HttpServerHandle = {
|
||||
* Binds to localhost only. Returns a handle for shutdown and port discovery.
|
||||
*/
|
||||
export async function startMcpHttpServer(port: number, options?: { quiet?: boolean }): Promise<HttpServerHandle> {
|
||||
// See startMcpServer() for the rationale — flip production mode here so the
|
||||
// HTTP transport resolves the real database path, without leaking state into
|
||||
// callers that only import this module for its exports (e.g. tests).
|
||||
enableProductionMode();
|
||||
const configPath = getConfigPath();
|
||||
const store = await createStore({
|
||||
dbPath: getDefaultDbPath(),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user