Blockchain Explorer: - Add transaction hash search support (64-char hex pattern validation) - Fetch and display transaction details in modal (hash, type, from/to, amount, fee, block) - Fix regex escape sequence in block height validation - Update search placeholder text to mention both search types - Add blank lines between function definitions for PEP 8 compliance Settlement Storage: - Add timedelta import for future
224 lines
6.7 KiB
Markdown
224 lines
6.7 KiB
Markdown
# Windsurf Testing Integration Guide
|
||
|
||
This guide explains how to use Windsurf's integrated testing features with the AITBC project.
|
||
|
||
## ✅ What's Been Configured
|
||
|
||
### 1. VS Code Settings (`.vscode/settings.json`)
|
||
- ✅ Pytest enabled (unittest disabled)
|
||
- ✅ Test discovery configured
|
||
- ✅ Auto-discovery on save enabled
|
||
- ✅ Debug port configured
|
||
|
||
### 2. Debug Configuration (`.vscode/launch.json`)
|
||
- ✅ Debug Python Tests
|
||
- ✅ Debug All Tests
|
||
- ✅ Debug Current Test File
|
||
- ✅ Uses `debugpy` (not deprecated `python`)
|
||
|
||
### 3. Task Configuration (`.vscode/tasks.json`)
|
||
- ✅ Run All Tests
|
||
- ✅ Run Tests with Coverage
|
||
- ✅ Run Unit Tests Only
|
||
- ✅ Run Integration Tests
|
||
- ✅ Run Current Test File
|
||
- ✅ Run Test Suite Script
|
||
|
||
### 4. Pytest Configuration
|
||
- ✅ `pyproject.toml` - Main configuration with markers
|
||
- ✅ `pytest.ini` - Moved to project root with custom markers
|
||
- ✅ `tests/conftest.py` - Fixtures with fallback mocks and test environment setup
|
||
|
||
### 5. Test Scripts (2026-01-29)
|
||
- ✅ `scripts/testing/` - All test scripts moved here
|
||
- ✅ `test_ollama_blockchain.py` - Complete GPU provider test
|
||
- ✅ `test_block_import.py` - Blockchain block import testing
|
||
|
||
### 6. Test Environment Improvements (2026-02-17)
|
||
- ✅ **Confidential Transaction Service**: Created wrapper service for missing module
|
||
- ✅ **Audit Logging**: Fixed permission issues using `/logs/audit/` directory
|
||
- ✅ **Database Configuration**: Added test mode support and schema migration
|
||
- ✅ **Integration Dependencies**: Comprehensive mocking for optional dependencies
|
||
- ✅ **Import Path Resolution**: Fixed complex module structure problems
|
||
- ✅ **Environment Variables**: Proper test environment configuration in conftest.py
|
||
|
||
## 🚀 How to Use
|
||
|
||
### Test Discovery
|
||
1. Open Windsurf
|
||
2. Click the **Testing panel** (beaker icon in sidebar)
|
||
3. Tests will be automatically discovered
|
||
4. See all `test_*.py` files listed
|
||
|
||
### Running Tests
|
||
|
||
#### Option 1: Testing Panel
|
||
- Click the **play button** next to any test
|
||
- Click the **play button** at the top to run all tests
|
||
- Right-click on a test folder for more options
|
||
|
||
#### Option 2: Command Palette
|
||
- `Ctrl+Shift+P` (or `Cmd+Shift+P` on Mac)
|
||
- Search for "Python: Run All Tests"
|
||
- Or search for "Python: Run Test File"
|
||
|
||
#### Option 3: Tasks
|
||
- `Ctrl+Shift+P` → "Tasks: Run Test Task"
|
||
- Select the desired test task
|
||
|
||
#### Option 4: Keyboard Shortcuts
|
||
- `F5` - Debug current test
|
||
- `Ctrl+F5` - Run without debugging
|
||
|
||
### Debugging Tests
|
||
1. Click the **debug button** next to any test
|
||
2. Set breakpoints in your test code
|
||
3. Press `F5` to start debugging
|
||
4. Use the debug panel to inspect variables
|
||
|
||
### Test Coverage
|
||
1. Run the "Run Tests with Coverage" task
|
||
2. Open `htmlcov/index.html` in your browser
|
||
3. See detailed coverage reports
|
||
|
||
## 📁 Test Structure
|
||
|
||
```
|
||
tests/
|
||
├── test_basic_integration.py # Basic integration tests
|
||
├── test_discovery.py # Simple discovery tests
|
||
├── test_windsurf_integration.py # Windsurf integration tests
|
||
├── unit/ # Unit tests
|
||
│ ├── test_coordinator_api.py
|
||
│ ├── test_wallet_daemon.py
|
||
│ └── test_blockchain_node.py
|
||
├── integration/ # Integration tests
|
||
│ └── test_full_workflow.py
|
||
├── e2e/ # End-to-end tests
|
||
│ └── test_user_scenarios.py
|
||
└── security/ # Security tests
|
||
└── test_security_comprehensive.py
|
||
```
|
||
|
||
## 🏷️ Test Markers
|
||
|
||
Tests are marked with:
|
||
- `@pytest.mark.unit` - Unit tests
|
||
- `@pytest.mark.integration` - Integration tests
|
||
- `@pytest.mark.e2e` - End-to-end tests
|
||
- `@pytest.mark.security` - Security tests
|
||
- `@pytest.mark.performance` - Performance tests
|
||
|
||
## 🔧 Troubleshooting
|
||
|
||
### Tests Not Discovered?
|
||
1. Check that files start with `test_*.py`
|
||
2. Verify pytest is enabled in settings
|
||
3. Run `python -m pytest --collect-only` to debug
|
||
|
||
### Import Errors?
|
||
1. The fixtures include fallback mocks
|
||
2. Check `tests/conftest.py` for path configuration
|
||
3. Use the mock clients if full imports fail
|
||
|
||
### Debug Not Working?
|
||
1. Ensure `debugpy` is installed
|
||
2. Check `.vscode/launch.json` uses `type: debugpy`
|
||
3. Verify test has a debug configuration
|
||
|
||
## 📝 Example Test
|
||
|
||
```python
|
||
import pytest
|
||
from unittest.mock import patch
|
||
|
||
@pytest.mark.unit
|
||
def test_example_function():
|
||
"""Example unit test"""
|
||
result = add(2, 3)
|
||
assert result == 5
|
||
|
||
@pytest.mark.integration
|
||
def test_api_endpoint(coordinator_client):
|
||
"""Example integration test using fixture"""
|
||
response = coordinator_client.get("/docs")
|
||
assert response.status_code == 200
|
||
```
|
||
|
||
## 🎯 Best Practices
|
||
|
||
1. **Use descriptive test names** - `test_specific_behavior`
|
||
2. **Add appropriate markers** - `@pytest.mark.unit`
|
||
3. **Use fixtures** - Don't repeat setup code
|
||
4. **Mock external dependencies** - Keep tests isolated
|
||
5. **Test edge cases** - Not just happy paths
|
||
6. **Keep tests fast** - Unit tests should be < 1 second
|
||
|
||
## 📊 Running Specific Tests
|
||
|
||
```bash
|
||
# Run all unit tests
|
||
pytest -m unit
|
||
|
||
# Run specific file
|
||
pytest tests/unit/test_coordinator_api.py
|
||
|
||
# Run with coverage
|
||
pytest --cov=apps tests/
|
||
|
||
# Run in parallel
|
||
pytest -n auto tests/
|
||
```
|
||
|
||
## 🎉 Success!
|
||
|
||
Your Windsurf testing integration is now fully configured! You can:
|
||
- Discover tests automatically
|
||
- Run tests with a click
|
||
- Debug tests visually
|
||
- Generate coverage reports
|
||
- Use all pytest features
|
||
|
||
Happy testing! 🚀
|
||
|
||
---
|
||
|
||
## Issue
|
||
Unittest discovery errors when using Windsurf's test runner with the `tests/` folder.
|
||
|
||
## Solution
|
||
1. **Updated pyproject.toml** - Added `tests` to the testpaths configuration
|
||
2. **Created minimal conftest.py** - Removed complex imports that were causing discovery failures
|
||
3. **Test discovery now works** for files matching `test_*.py` pattern
|
||
|
||
## Current Status
|
||
- ✅ Test discovery works for simple tests (e.g., `tests/test_discovery.py`)
|
||
- ✅ All `test_*.py` files are discovered by pytest
|
||
- ⚠️ Tests with complex imports may fail during execution due to module path issues
|
||
|
||
## Running Tests
|
||
|
||
### For test discovery only (Windsurf integration):
|
||
```bash
|
||
cd /home/oib/windsurf/aitbc
|
||
python -m pytest --collect-only tests/
|
||
```
|
||
|
||
### For running all tests (with full setup):
|
||
```bash
|
||
cd /home/oib/windsurf/aitbc
|
||
python run_tests.py tests/
|
||
```
|
||
|
||
## Test Files Found
|
||
- `tests/e2e/test_wallet_daemon.py`
|
||
- `tests/integration/test_blockchain_node.py`
|
||
- `tests/security/test_confidential_transactions.py`
|
||
- `tests/unit/test_coordinator_api.py`
|
||
- `tests/test_discovery.py` (simple test file)
|
||
|
||
## Notes
|
||
- The original `conftest_full.py` contains complex fixtures requiring full module setup
|
||
- To run tests with full functionality, restore `conftest_full.py` and use the wrapper script
|
||
- For Windsurf's test discovery, the minimal `conftest.py` provides better experience
|