Files
Claude-Code-Workflow/ccw/test-cli-history-migration.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

58 lines
1.9 KiB
JavaScript

/**
* Test script for CLI History Store migration fix
* Tests that:
* 1. New database creation includes all columns (no migration logs)
* 2. Old database upgrade shows batch migration log (once)
* 3. Subsequent initializations are silent
*/
import { CliHistoryStore, closeAllStores } from './dist/tools/cli-history-store.js';
import { existsSync, mkdirSync, rmSync } from 'fs';
import { join } from 'path';
const testDir = join(process.cwd(), '.test-cli-history');
// Clean up test directory
if (existsSync(testDir)) {
rmSync(testDir, { recursive: true, force: true });
}
mkdirSync(testDir, { recursive: true });
console.log('=== Test 1: New database creation (should have NO migration logs) ===\n');
const store1 = new CliHistoryStore(testDir);
console.log('\n✓ Test 1 passed: No migration logs for new database\n');
// Close store
closeAllStores();
console.log('=== Test 2: Subsequent initialization (should be silent) ===\n');
const store2 = new CliHistoryStore(testDir);
console.log('\n✓ Test 2 passed: Subsequent initialization is silent\n');
// Verify table structure
const db = store2.db;
const turnsInfo = db.prepare('PRAGMA table_info(turns)').all();
const columnNames = turnsInfo.map(col => col.name);
console.log('=== Verifying turns table columns ===');
const requiredColumns = [
'id', 'conversation_id', 'turn_number', 'timestamp', 'prompt',
'duration_ms', 'status', 'exit_code', 'stdout', 'stderr', 'truncated',
'cached', 'stdout_full', 'stderr_full', 'parsed_output', 'final_output'
];
const missingColumns = requiredColumns.filter(col => !columnNames.includes(col));
if (missingColumns.length > 0) {
console.error('✗ Missing columns:', missingColumns.join(', '));
process.exit(1);
} else {
console.log('✓ All required columns present:', requiredColumns.join(', '));
}
closeAllStores();
// Clean up
rmSync(testDir, { recursive: true, force: true });
console.log('\n=== All tests passed! ===\n');