fix: enhance regex to correctly parse wrapper file paths for claude.exe (#741)

This commit is contained in:
Haile
2026-05-04 18:54:02 +03:00
committed by GitHub
parent e89d2da5df
commit beb0a50413
2 changed files with 15 additions and 1 deletions

View File

@@ -33,6 +33,20 @@ test('resolveClaudeCodeExecutablePath keeps an explicit JavaScript launcher path
assert.equal(resolved, scriptPath);
});
test('resolveClaudeCodeExecutablePath can parse a wrapper file path containing letters r and n before claude.exe', () => {
const wrapperPath = 'C:\\tools\\claude';
const nativePath = 'C:\\tools\\custom\\bin\\node_modules\\@anthropic-ai\\claude-code\\bin\\claude.exe';
const readFileSync = (() => `exec "$basedir/custom/bin/node_modules/@anthropic-ai/claude-code/bin/claude.exe" "$@"`) as unknown as ResolveClaudeCodeExecutablePathDependencies['readFileSync'];
const resolved = resolveClaudeCodeExecutablePath(wrapperPath, {
platform: 'win32',
existsSync: (candidate) => candidate === nativePath,
readFileSync,
});
assert.equal(resolved, nativePath);
});
test('resolveClaudeCodeExecutablePath falls back to the configured command when PATH lookup fails', () => {
const execFileSync = (() => {
throw new Error('not found');

View File

@@ -50,7 +50,7 @@ function resolveClaudeWrapperBinary(
return null;
}
const matches = content.matchAll(/["']([^"'\\r\\n]*claude\.exe)["']/gi);
const matches = content.matchAll(/["']([^"'\\\r\n]*claude\.exe)["']/gi);
for (const match of matches) {
const rawTarget = match[1]
.replace(/^\$basedir[\\/]/i, '')