Files
nas-tools/dashboard/backend/README-PRECOMMIT.md
T
Gan, Jimmy b981c06d59
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 2m26s
Run Tests / Backend Tests (push) Failing after 2m36s
Run Tests / Frontend Tests (push) Failing after 2m23s
Run Tests / Test Summary (push) Failing after 13s
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%
2026-04-08 00:21:32 +08:00

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

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
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.