claude-os/tests/README.md
2025-10-27 17:41:44 -05:00

141 lines
3.3 KiB
Markdown

# Claude OS Test Suite
Comprehensive tests for the Claude OS RAG system.
## Setup
1. **Install test dependencies:**
```bash
pip install -r requirements.txt
```
2. **Create test database:**
```bash
createdb codeforge_test
psql -d codeforge_test -c "CREATE EXTENSION vector"
```
3. **Set environment variables (optional):**
```bash
export TEST_POSTGRES_HOST=localhost
export TEST_POSTGRES_PORT=5432
export TEST_POSTGRES_DB=codeforge_test
export TEST_POSTGRES_USER=$USER
export TEST_OLLAMA_HOST=http://localhost:11434
```
## Running Tests
### Run all tests:
```bash
pytest
```
### Run specific test categories:
```bash
# Unit tests only (fast, no external dependencies)
pytest -m unit
# Integration tests (require database, Ollama)
pytest -m integration
# Vector operation tests
pytest -m vector
# RAG engine tests
pytest -m rag
# API endpoint tests
pytest -m api
```
### Run specific test files:
```bash
pytest tests/test_pg_vector.py
pytest tests/test_rag_engine.py
pytest tests/test_api.py
```
### Run with coverage:
```bash
pytest --cov=app --cov-report=html
# Open htmlcov/index.html to view coverage report
```
### Run with verbose output:
```bash
pytest -v
```
### Run and stop on first failure:
```bash
pytest -x
```
## Test Structure
- **`conftest.py`** - Shared fixtures and configuration
- **`test_pg_vector.py`** - PostgreSQL vector operations
- **`test_rag_engine.py`** - RAG engine functionality
- **`test_embeddings.py`** - Embedding generation
- **`test_document_processing.py`** - Document ingestion and chunking
- **`test_api.py`** - FastAPI endpoints
## Test Markers
Tests are categorized with markers:
- `@pytest.mark.unit` - Fast unit tests, no external dependencies
- `@pytest.mark.integration` - Integration tests requiring database/Ollama
- `@pytest.mark.slow` - Tests that may take several seconds
- `@pytest.mark.embeddings` - Tests involving embedding generation
- `@pytest.mark.vector` - Tests involving vector operations
- `@pytest.mark.rag` - Tests involving RAG engine
- `@pytest.mark.api` - Tests involving API endpoints
## Fixtures
Common fixtures available in all tests:
- `test_db_config` - Database configuration
- `db_connection` - Test database connection (session-scoped)
- `clean_db` - Clean database before each test
- `sample_kb` - Sample knowledge base
- `sample_embedding` - Sample 768-dimensional embedding
- `sample_documents` - Sample documents with embeddings
- `mock_ollama_embedding` - Mock Ollama embedding model
- `mock_ollama_llm` - Mock Ollama LLM
- `sample_text_file` - Sample text file
- `sample_pdf_file` - Sample PDF file
- `sample_markdown_file` - Sample Markdown file
- `api_client` - FastAPI test client
## CI/CD Integration
Tests can be run in CI/CD pipelines:
```yaml
# Example GitHub Actions workflow
- name: Run tests
run: |
pytest --cov=app --cov-report=xml
- name: Upload coverage
uses: codecov/codecov-action@v3
```
## Troubleshooting
### Database connection errors:
- Ensure PostgreSQL is running
- Verify test database exists: `psql -l | grep codeforge_test`
- Check environment variables
### Ollama connection errors:
- Ensure Ollama is running: `curl http://localhost:11434/api/tags`
- Check TEST_OLLAMA_HOST environment variable
### Import errors:
- Ensure you're in the project root directory
- Install all dependencies: `pip install -r requirements.txt`