feat: comprehensive test infrastructure improvements
- Fix unit test imports: add env setup in conftest.py before module imports - Add 24 new auth router tests (RBAC, preferences, password validation) - Add 16 new tests for litellm and chat_summary routers - Apply black formatting and ruff linting across codebase - Add pre-commit hooks configuration (black, ruff, file checks) - Increase CI coverage threshold from 40% to 50% Test Results: - 206 tests passing (91 unit + 115 integration) - Coverage: 58.79% on core modules - auth.py: 57% → 85%, litellm.py: 23% → 87%, chat_summary.py: 41% → 100% - auth_service: 96.51%, config: 100%, rbac: 93.48%
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# Pre-commit Hooks Setup
|
||||
|
||||
This project uses pre-commit hooks to ensure code quality before commits.
|
||||
|
||||
## Tools
|
||||
|
||||
- **black**: Code formatter (line length: 120)
|
||||
- **ruff**: Fast Python linter
|
||||
- **pre-commit-hooks**: Basic file checks (trailing whitespace, YAML validation, etc.)
|
||||
|
||||
## Installation
|
||||
|
||||
### Option 1: Manual Installation (Recommended for this repo)
|
||||
|
||||
Since this repo has a custom `core.hooksPath`, install pre-commit manually:
|
||||
|
||||
```bash
|
||||
cd dashboard/backend
|
||||
source venv/bin/activate
|
||||
pip install -r requirements-dev.txt
|
||||
|
||||
# Run manually before committing
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
### Option 2: Standard Installation
|
||||
|
||||
If you want to use pre-commit's automatic hooks:
|
||||
|
||||
```bash
|
||||
cd /path/to/nas-tools
|
||||
git config --unset-all core.hooksPath
|
||||
cd dashboard/backend
|
||||
source venv/bin/activate
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Run on all files
|
||||
```bash
|
||||
cd dashboard/backend
|
||||
source venv/bin/activate
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
### Run on staged files only
|
||||
```bash
|
||||
pre-commit run
|
||||
```
|
||||
|
||||
### Run specific hook
|
||||
```bash
|
||||
pre-commit run black --all-files
|
||||
pre-commit run ruff --all-files
|
||||
```
|
||||
|
||||
### Skip hooks (not recommended)
|
||||
```bash
|
||||
git commit --no-verify
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
- `.pre-commit-config.yaml`: Hook configuration
|
||||
- `pyproject.toml`: Black and Ruff settings
|
||||
|
||||
## What the hooks check
|
||||
|
||||
1. **black**: Formats Python code to consistent style
|
||||
2. **ruff**: Checks for common Python errors and style issues
|
||||
3. **trailing-whitespace**: Removes trailing whitespace
|
||||
4. **end-of-file-fixer**: Ensures files end with newline
|
||||
5. **check-yaml**: Validates YAML syntax
|
||||
6. **check-json**: Validates JSON syntax
|
||||
7. **check-merge-conflict**: Detects merge conflict markers
|
||||
8. **check-added-large-files**: Prevents committing large files (>1MB)
|
||||
|
||||
## CI Integration
|
||||
|
||||
The test workflow runs these checks automatically:
|
||||
- Tests must pass
|
||||
- Coverage must be ≥50%
|
||||
|
||||
Pre-commit hooks help catch issues locally before pushing to CI.
|
||||
Reference in New Issue
Block a user