Files
Claude-Code-Workflow/ccw/test-codex-lens-lsp.js
catlog22 3fe630f221 Add tests and documentation for CodexLens LSP tool
- Introduced a new test script for the CodexLens LSP tool to validate core functionalities including symbol search, find definition, find references, and get hover.
- Created comprehensive documentation for the MCP endpoint design, detailing the architecture, features, and integration with the CCW MCP Manager.
- Developed a detailed implementation plan for transitioning to a real LSP server, outlining phases, architecture, and acceptance criteria.
2026-01-19 23:26:35 +08:00

125 lines
3.3 KiB
JavaScript

#!/usr/bin/env node
/**
* Test script for codex_lens_lsp MCP tool
* Tests the 4 LSP actions: symbol_search, find_definition, find_references, get_hover
*/
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
// Import the tool
const toolModule = await import('./dist/tools/codex-lens-lsp.js');
const { schema, handler } = toolModule;
console.log('='.repeat(80));
console.log('CodexLens LSP Tool Test');
console.log('='.repeat(80));
console.log();
// Test 1: Schema validation
console.log('✓ Test 1: Tool Schema');
console.log(` Name: ${schema.name}`);
console.log(` Description: ${schema.description.substring(0, 100)}...`);
console.log(` Input Schema: ${JSON.stringify(schema.inputSchema.required)}`);
console.log();
// Test 2: Symbol Search
console.log('✓ Test 2: Symbol Search');
try {
const result = await handler({
action: 'symbol_search',
symbol_name: 'Config',
limit: 5,
});
console.log(` Success: ${result.success}`);
if (!result.success) {
console.log(` Error: ${result.error}`);
} else {
console.log(` Results: ${JSON.stringify(result.result, null, 2).substring(0, 200)}...`);
}
} catch (err) {
console.log(` Exception: ${err.message}`);
}
console.log();
// Test 3: Find Definition
console.log('✓ Test 3: Find Definition');
try {
const result = await handler({
action: 'find_definition',
symbol_name: 'executeCodexLens',
symbol_kind: 'function',
});
console.log(` Success: ${result.success}`);
if (!result.success) {
console.log(` Error: ${result.error}`);
} else {
console.log(` Results: ${JSON.stringify(result.result, null, 2).substring(0, 200)}...`);
}
} catch (err) {
console.log(` Exception: ${err.message}`);
}
console.log();
// Test 4: Find References
console.log('✓ Test 4: Find References');
try {
const result = await handler({
action: 'find_references',
symbol_name: 'ToolSchema',
});
console.log(` Success: ${result.success}`);
if (!result.success) {
console.log(` Error: ${result.error}`);
} else {
console.log(` Results count: ${Array.isArray(result.result?.results) ? result.result.results.length : 0}`);
}
} catch (err) {
console.log(` Exception: ${err.message}`);
}
console.log();
// Test 5: Get Hover
console.log('✓ Test 5: Get Hover');
try {
const result = await handler({
action: 'get_hover',
symbol_name: 'handler',
});
console.log(` Success: ${result.success}`);
if (!result.success) {
console.log(` Error: ${result.error}`);
} else {
console.log(` Results: ${JSON.stringify(result.result, null, 2).substring(0, 200)}...`);
}
} catch (err) {
console.log(` Exception: ${err.message}`);
}
console.log();
// Test 6: Parameter Validation
console.log('✓ Test 6: Parameter Validation');
try {
const result = await handler({
action: 'symbol_search',
// Missing required symbol_name
});
console.log(` Success: ${result.success}`);
console.log(` Error (expected): ${result.error?.substring(0, 100)}...`);
} catch (err) {
console.log(` Exception (expected): ${err.message.substring(0, 100)}...`);
}
console.log();
console.log('='.repeat(80));
console.log('Tests completed!');
console.log('='.repeat(80));