test-tree-sitter-debug.jsā¢2.32 kB
#!/usr/bin/env node
import { SemanticAnalyzer } from '../rust-core/index.js';
async function testTreeSitterBasics() {
console.log('š Testing basic tree-sitter functionality...\n');
try {
const analyzer = new SemanticAnalyzer();
// Test with extremely simple code that should definitely parse
const simpleCases = [
{
name: 'Simple TypeScript class',
file: 'simple.ts',
content: 'class Test {}'
},
{
name: 'Simple JavaScript function',
file: 'simple.js',
content: 'function test() {}'
},
{
name: 'Simple Python class',
file: 'simple.py',
content: 'class Test:\n pass'
},
{
name: 'Simple Rust struct',
file: 'simple.rs',
content: 'struct Test {}'
}
];
for (const testCase of simpleCases) {
console.log(`\nš ${testCase.name}:`);
console.log(` File: ${testCase.file}`);
console.log(` Content: "${testCase.content}"`);
try {
const concepts = await analyzer.analyzeFileContent(testCase.file, testCase.content);
console.log(` Result: ${concepts.length} concepts found`);
if (concepts.length > 0) {
concepts.forEach((concept, i) => {
console.log(` [${i}] ${concept.name} (${concept.conceptType}) - ${concept.confidence}`);
});
} else {
console.log(` ā No concepts extracted - tree-sitter or extraction logic issue`);
}
} catch (error) {
console.log(` ā Error: ${error.message}`);
if (error.message.includes('Unsupported language')) {
console.log(` š Language detection issue`);
} else if (error.message.includes('Failed to parse')) {
console.log(` š Tree-sitter parsing issue`);
}
}
}
// Test an invalid case to see error handling
console.log(`\nš Testing error handling:`);
try {
await analyzer.analyzeFileContent('unknown.xyz', 'invalid content');
} catch (error) {
console.log(` ā
Correctly caught error: ${error.message}`);
}
} catch (error) {
console.error('ā Test setup failed:', error);
console.error('Stack:', error.stack);
}
}
testTreeSitterBasics();