b981c06d59
- 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%
86 lines
1.9 KiB
Markdown
86 lines
1.9 KiB
Markdown
# 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.
|