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%
1.9 KiB
1.9 KiB
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:
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:
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
cd dashboard/backend
source venv/bin/activate
pre-commit run --all-files
Run on staged files only
pre-commit run
Run specific hook
pre-commit run black --all-files
pre-commit run ruff --all-files
Skip hooks (not recommended)
git commit --no-verify
Configuration
.pre-commit-config.yaml: Hook configurationpyproject.toml: Black and Ruff settings
What the hooks check
- black: Formats Python code to consistent style
- ruff: Checks for common Python errors and style issues
- trailing-whitespace: Removes trailing whitespace
- end-of-file-fixer: Ensures files end with newline
- check-yaml: Validates YAML syntax
- check-json: Validates JSON syntax
- check-merge-conflict: Detects merge conflict markers
- 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.