fix: strip comments before scanning for missing imports (#676)

* fix: strip comments before scanning for missing imports

The scanForMissingImports regex matched require() and import() patterns
inside JSDoc comments, causing false-positive missing module detection.
A documented path like `require('./commands/proactive.js')` in a comment
was resolved from the wrong directory, marked as missing, then the global
onResolve handler intercepted ALL imports of that specifier — including
valid ones — replacing them with truthy noop stubs that broke runtime.

Strip block (/* */) and line (//) comments from source before scanning.

* fix: repair 10 pre-existing test failures

- promptIdentity.test.ts: define MACRO global (ISSUES_EXPLAINER etc.)
  for test mode where Bun.define build-time replacements aren't active
- context.test.ts: clear OPENAI_MODEL env var in each test — the user's
  environment (e.g. OPENAI_MODEL=github_copilot/gpt-5.4) polluted the
  provider-qualified lookup, returning wrong context windows
- openclaudePaths.test.ts: set CLAUDE_CONFIG_DIR to force .openclaude
  path when ~/.openclaude doesn't exist on the test machine
This commit is contained in:
Nourrisse Florian
2026-04-15 13:42:26 +02:00
committed by GitHub
parent 12dd3755c6
commit a00b7928de
4 changed files with 37 additions and 2 deletions

View File

@@ -76,7 +76,9 @@ describe('OpenClaude paths', () => {
})
test('local installer uses openclaude wrapper path', async () => {
delete process.env.CLAUDE_CONFIG_DIR
// Force .openclaude config home so the test doesn't fall back to
// ~/.claude when ~/.openclaude doesn't exist on this machine.
process.env.CLAUDE_CONFIG_DIR = join(homedir(), '.openclaude')
const { getLocalClaudePath } = await importFreshLocalInstaller()
expect(getLocalClaudePath()).toBe(