- Add ws2_32 linking for httplib on Windows (tests/CMakeLists.txt)
- Fix Python path for Windows (use full path instead of python3/python)
- Add PowerShell test runner script (run_tests.ps1)
Windows-specific issues resolved:
- Microsoft Store Python stub bypassed by using full Python path
- Winsock dependency for httplib network functionality
- All 120 tests now pass (282 assertions)
Test results: 120/120 passed ✅
- Module Tests (70 TI): Scheduler, Notification, Monitoring, AI, Voice, Storage, Web
- MCP Types Tests (15 TI): JSON-RPC serialization
- MCP Transport Tests (20 TI): stdio communication
- MCP Client Tests (15 TI): multi-server connections
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Python buffers stdout by default when not in TTY mode, causing
StdioTransport to receive EOF immediately when reading from the
child process pipes.
Solution: Add -u flag to Python command in MCP config to force
unbuffered I/O mode.
Fixes: 50 MCP tests that were timing out
- TI_CLIENT_* tests now pass (50/50)
- All unit tests passing (282 assertions, 120 test cases)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Ajout du test d'intégration le plus complet qui valide toute
la boucle conversationnelle AISSIA en conditions réelles.
Test IT_009_FullConversationLoop:
- Scénario en 3 étapes validant le flux complet
- Step 1: Voice "Prends note que j'aime le C++"
→ AI → LLM (appelle storage_save_note) → Storage sauvegarde
- Step 2: Voice "Qu'est-ce que j'aime ?"
→ AI → LLM (appelle storage_query_notes) → Storage récupère
- Step 3: Validation cohérence conversationnelle
Validations:
✅ Communication Voice → AI → LLM
✅ Exécution tools MCP (storage_save_note, storage_query_notes)
✅ Persistence et retrieval de données
✅ Cohérence conversation multi-tour
✅ Cleanup automatique des fichiers de test
Résultat final: 9/9 tests d'intégration opérationnels
- 4 tests MCP (tools)
- 4 tests flux (communications inter-modules)
- 1 test end-to-end (boucle complète)
Total: ~35s pour valider AISSIA en conditions réelles
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Implémentation complète d'un système de tests d'intégration modulaire
pour valider AISSIA en conditions réelles.
Architecture "Un module = Un test":
- Chaque test est un module GroveEngine (.so) chargé dynamiquement
- TestRunnerModule orchestre l'exécution de tous les tests
- Rapports console + JSON avec détails complets
- Exit codes appropriés pour CI/CD (0=success, 1=failure)
Infrastructure:
- ITestModule: Interface de base pour tous les tests
- TestRunnerModule: Orchestrateur qui découvre/charge/exécute les tests
- Configuration globale: config/test_runner.json
- Flag --run-tests pour lancer les tests
Tests implémentés (8/8 passing):
Phase 1 - Tests MCP:
✅ IT_001_GetCurrentTime: Test tool get_current_time via AI
✅ IT_002_FileSystemWrite: Test tool filesystem_write
✅ IT_003_FileSystemRead: Test tool filesystem_read
✅ IT_004_MCPToolsList: Vérification inventaire tools (≥5)
Phase 2 - Tests Flux:
✅ IT_005_VoiceToAI: Communication Voice → AI
✅ IT_006_AIToLLM: Requête AI → Claude API (réelle)
✅ IT_007_StorageWrite: AI → Storage (sauvegarde note)
✅ IT_008_StorageRead: AI → Storage (lecture note)
Avantages:
🔥 Hot-reload ready: Tests modifiables sans recompiler
🌐 Conditions réelles: Vraies requêtes Claude API, vrais fichiers
🎯 Isolation: Chaque test indépendant, cleanup automatique
📊 Rapports complets: Console + JSON avec détails par test
✅ CI/CD ready: Exit codes, JSON output, automation-friendly
Usage:
cmake --build build --target integration_tests
cd build && ./aissia --run-tests
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Module fixes:
- MonitoringModule: Publish app_changed for first app (empty oldApp)
- MonitoringModule: Add appName and classification fields to events
- AIModule: Publish ai:suggestion in handleLLMResponse
- VoiceModule: Support flat config format (ttsEnabled/sttEnabled)
- StorageModule: Support both durationMinutes and duration fields
Test fixes:
- AIModuleTests: Simulate LLM responses for hyperfocus/break tests
All 110 tests now pass (252 assertions)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- HttpClient: Use full URL with scheme (https://) for proper SSL support
- main.cpp: Create separate InteractiveClient IO to avoid self-delivery skip
- main.cpp: Process llm:response messages in main loop for terminal display
- ClaudeProvider: Add debug logging for request details
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Catch2 test framework with MockIO and TimeSimulator utilities
- Implement 10 TI for SchedulerModule (task lifecycle, hyperfocus, breaks)
- Implement 10 TI for NotificationModule (queue, priority, silent mode)
- Fix SchedulerModule: update m_lastActivityTime in process()
- Add AISSIA_TEST_BUILD guards to avoid symbol conflicts
- All 20 tests passing (69 assertions total)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>