Gemini CLI Integration Test Suite
Gemini CLI deve integrar perfeitamente com Vectora via MCP, reconhecendo quando usar Vectora e quando não usar, fazendo chamadas corretas e recebendo resultados de forma confiável. Esta suite valida a inteligência de decisão, transparência e graceful degradation. Cobertura: 100+ testes | Prioridade: CRÍTICA
Principles
Princípios
- Inteligência de Decisão: CLI sabe quando chamar Vectora
- Transparência: Usuário vê exatamente o que está acontecendo
- Graceful Degradation: Se Vectora falhar, CLI continua funcionando
- Performance: Resposta final em < 2 segundos para maioria das queries
Segmentos de Testes
1. CLI Initialization & Setup (15 testes)
Test: CLI Starts with Vectora Available
Given: gemini-cli com Vectora instalado e disponível
When: CLI iniciada
Then:
- Detecta Vectora no PATH
- Conecta via MCP (STDIO)
- Estado: "ready"
- Timeout de conexão < 5sTest: CLI Handles Vectora Unavailable
Given: Vectora não está disponível
When: CLI iniciada
Then:
- Continua funcionando
- Avisa user: "Vectora não está disponível"
- Oferece usar funcionalidades base
- Comportamento graceful degradationTest: MCP Connection Establishment
Given: CLI pronta para conectar
When: MCP handshake iniciado
Then:
- Initialize request enviado
- Server info recebido
- Tools listadas
- Conectado em < 2sTest: Tool Discovery
Given: MCP conectado
When: CLI descobre tools
Then: Lista inclui:
- search_context
- search_tests
- find_similar_code
- analyze_dependencies
- get_file_structure
- Todas com schemas corretos2. Decision Intelligence (20 testes)
Test: Code-Related Query → Use Vectora
Given: User pergunta: "Como encontrar todas as chamadas para getUserById?"
When: CLI processa query
Then:
- Reconhece como code-related
- Chama Vectora com query apropriada
- Mapeia para tool: analyze_dependencies
- Executa: vectora.analyze_dependencies({symbol: "getUserById"})
- Retorna results em < 1sTest: Non-Code Query → Don’t Use Vectora
Given: User pergunta: "Como fazer um bolo de chocolate?"
When: CLI processa query
Then:
- Reconhece como não code-related
- NÃO chama Vectora
- Responde diretamente com conhecimento Gemini
- Sem menção desnecessária a VectoraTest: Ambiguous Query → Offer Vectora Option
Given: User pergunta: "Qual é a melhor forma de autenticar?"
When: CLI processa query
Then: Oferece opções:
Option A: "Quer buscar exemplos no seu codebase?" (com Vectora)
Option B: "Ou explicar padrões genéricos?" (sem Vectora)Test: Context-Aware Decisions
Given: Conversation com histórico
And: User: "Qual é o bug aqui?" (referenciando código anterior)
When: CLI processa
Then:
- Entende contexto da conversa
- Usa Vectora para procurar código similar
- Conecta findings ao contexto anteriorTest: Search Concept Decision
Given: Query: "Como fazer error handling em Go?"
When: CLI processa
Then:
- Pode ir para Vectora (buscar no codebase)
- Pode responder diretamente (padrão genérico)
- Ou combinar (responda padrão + exemplos do codebase)
- Todos os caminhos são válidos3. Tool Invocation (25 testes)
Test: Search Context Tool
Given: Query mapeada para search_context
When: Tool invocado com:
{query: "authentication handler", top_k: 5}
Then:
- Vectora processa
- Resultados retornados
- CLI formata como resposta natural
- Usuário vê: "Found 3 authentication handlers in your code..."Test: Analyze Dependencies Tool
Given: Query mapeada para analyze_dependencies
When: Tool invocado com:
{symbol: "processPayment"}
Then:
- Dependências mapeadas
- Grafo de chamadas retornado
- CLI visualiza como texto/diagrama
- Risco de circular dependencies alertadoTest: Tool Error Handling
Given: Tool invocado com dados inválidos
When: Error retornado de Vectora
Then:
- CLI recebe erro
- Mostra mensagem clara ao user
- Sugere como refinar query
- Continua conversa sem crashTest: Large Result Handling
Given: Tool retorna 1000+ resultados
When: Processado
Then:
- Pagina resultados
- User vê top 10 por padrão
- Opção para ver mais
- Performance não degradaTest: Timeout Handling
Given: Tool demora > 10s
When: Processado
Then:
- Timeout acionado após 10s
- User avisado: "Query está demorando"
- Oferta para cancelar
- Se cancelado, sem crash4. Conversation Continuity (15 testes)
Test: Context Carries Over
Given: User: "Qual é a função getCachedUser?"
And: CLI busca com Vectora
And: Retorna: "In auth/cache.ts, linha 42"
When: User: "Qual é o bug nela?"
Then:
- Contexto da conversa mantido
- CLI sabe qual função é "nela"
- Proxima busca em Vectora é para essa funçãoTest: Multi-Step Investigation
Given: 5-step investigation usando Vectora
When: Cada passo completado
Then:
- Contexto preservado entre steps
- Findings acumulam
- Diagrama mental construído
- Final summary conecta todos stepsTest: User Refinement
Given: Primeira query retorna muitos resultados
When: User: "Mais específico, apenas TypeScript"
Then:
- Novo parâmetro aplicado
- Mesma estrutura de conversa mantida
- Resultados refinados5. Response Formatting (15 testes)
Test: Natural Language Formatting
Given: Tool retorna dados estruturados:
[{file: "auth/jwt.ts", line: 42, score: 0.95}]
When: Formatado para user
Then: Exibido como:
"Found JWT validation in auth/jwt.ts (line 42, match: 95%)"
Não como: "{file: ..., line: ...}"Test: Code Highlighting
Given: Tool retorna código snippet
When: Formatado
Then:
- Sintaxe highlightada
- Line numbers mostrados
- Contexto visível
- Fácil de ler no terminalTest: Summary vs Details
Given: 50 resultados de search
When: User solicitou resumo
Then: Mostrado sumário (5 top results)
And: User pode pedir detalhes
When: Usuário pede detalhes
Then: Todos 50 mostrados com paginação6. Error & Edge Cases (10 testes)
Test: Network Failure Recovery
Given: Network goes down during tool invocation
When: Vectora desconecta
Then:
- Reconhece desconexão
- User avisado
- Oferece retry ou offline alternatives
- Reconnect automático quando onlineTest: Invalid Query Formatting
Given: User query é malformado
When: CLI processa
Then:
- Detecta problema
- Sugere correção
- Oferece exemplo de boa query
- Oferece retryTest: Empty Codebase Handling
Given: Codebase vazio ou muito pequeno
When: Search executado
Then:
- Não crash
- Mensagem clara: "No matching code found"
- Sugestão para adicionar código7. Transparency & Debugging (10 testes)
Test: Show Tool Usage
Given: User query que usa Vectora
When: Query processada
Then: CLI mostra:
"Using Vectora tool: search_context"
"Query: 'authentication handler'"
"Results: 3 found (score > 0.7)"Test: Verbose Mode
Given: CLI em verbose mode
When: Tool invocado
Then: Mostra:
- Exact query enviado
- Response recebido (JSON)
- Parsing steps
- Final formattingTest: Performance Metrics
Given: Tool executado
When: Completo
Then: Exibido:
"Query took 250ms (cache hit)"
"Network: 120ms, Processing: 130ms"8. Hybrid Mode Tests (10 testes)
Test: Combination Response
Given: Query que beneficia de ambas respostas
When: CLI processa:
1. Busca em Vectora (exemplos reais)
2. Responde com conhecimento Gemini (padrões)
Then: Response combina ambas:
"Here are the patterns, and in your code specifically..."Test: Confidence-Based Decision
Given: Query onde Vectora pode ajudar
When: Score de relevância é baixo (< 0.6)
Then:
- Usa resposta Gemini como primária
- Vectora como supplementary
- User vê diferença na apresentaçãoPerformance SLAs
| Scenario | Target Latency |
|---|---|
| Simple search (Vectora) | < 500ms |
| Complex analysis | < 2s |
| User response time | < 3s |
| Error handling | < 1s |
| Formatting output | < 500ms |
Critérios de Aceitação
| Critério | Alvo |
|---|---|
| Decision intelligence accuracy | 90%+ |
| Tool invocation success rate | 99%+ |
| Response formatting quality | 95%+ |
| Error recovery | 100% |
| Latency compliance | 99%+ |
| Zero crashes | 100% |
| User satisfaction | 90%+ |
Como Executar
# Todos os testes
go test -v ./tests/gemini-cli/...
# Suite específica
go test -v -run TestDecisionIntelligence ./tests/gemini-cli/...
# Com conversation replay
python scripts/test_conversation_flows.py
# Load test (100 concurrent conversations)
go test -v -timeout 10m ./tests/gemini-cli/load_test.go
# Manual testing
gemini-cli --verbose # Mostra detailTest Data
Usaremos fixture de código real de:
- Open source projects (Go, TypeScript, Python)
- Real Vectora codebase
- Community contributed examples
Mapa de Implementação
- CLI Initialization (15 testes)
- Decision Intelligence (20 testes)
- Tool Invocation (25 testes)
- Conversation Continuity (15 testes)
- Response Formatting (15 testes)
- Error & Edge Cases (10 testes)
- Transparency & Debugging (10 testes)
- Hybrid Mode (10 testes)
Total: 100+ testes
External Linking
| Concept | Resource | Link |
|---|---|---|
| Gemini API | Google AI Studio & Gemini API Documentation | ai.google.dev/docs |
| MCP | Model Context Protocol Specification | modelcontextprotocol.io/specification |
| MCP Go SDK | Go SDK for MCP (anthropics/go-sdk) | github.com/anthropics/anthropic-sdk-go |
| JWT | RFC 7519: JSON Web Token Standard | datatracker.ietf.org/doc/html/rfc7519 |
| TypeScript | TypeScript: Typed superset of JavaScript | www.typescriptlang.org/docs/ |
Vectora v0.1.0 · GitHub · Licença (MIT) · Contribuidores
Parte do ecossistema Vectora AI Agent. Construído com ADK, Claude e Go.
© 2026 Contribuidores do Vectora. Todos os direitos reservados.