Files
claude-scripts/tests/hooks/TEST_COVERAGE_SUMMARY.md
Travis Vasceannie 3e2e2dfbc1 feat: enhance virtual environment detection and error formatting
- Added functions to improve detection of the project's virtual environment, allowing for better handling of various project structures.
- Implemented error formatting for linter outputs, ensuring clearer and more informative messages for type errors and code quality issues.
- Updated tests to cover comprehensive scenarios for virtual environment detection and error formatting, ensuring robustness and reliability.
2025-10-04 21:19:39 +00:00

4.0 KiB

Comprehensive Hook Test Coverage

Test Statistics

  • Total Tests: 62
  • Test Files: 3
  • All Tests Passing:

Test Files

1. test_quality_internals.py (28 tests)

Core functionality tests for hook internals.

2. test_venv_and_formatting.py (9 tests)

Virtual environment detection and linter error formatting.

3. test_comprehensive_scenarios.py (25 tests)

Comprehensive coverage of all edge cases and scenarios.

Scenarios Covered

Project Structure Variations (5 tests)

  • Flat layout (no src/)
  • Src layout (with src/)
  • Nested projects (monorepo)
  • No project markers
  • Deeply nested files

Configuration Inheritance (4 tests)

  • pyrightconfig.json detection
  • pyproject.toml as marker
  • .gitignore auto-update for .tmp/
  • .gitignore not modified if already present

Virtual Environment Edge Cases (3 tests)

  • Missing .venv (fallback)
  • .venv exists but no bin/
  • PYTHONPATH not set without src/

Type Checker Integration (5 tests)

  • All tools disabled
  • Tool not found
  • Tool timeout
  • Tool OS error
  • Unknown tool name

Working Directory (1 test)

  • CWD set to project root

Error Conditions (3 tests)

  • Invalid syntax
  • Permission errors
  • Empty file content

File Locations (2 tests)

  • Files in tests/
  • Files in project root

Temp File Management (2 tests)

  • Temp files cleaned up
  • Temp files in correct location

Critical Fixes Validated

1. Virtual Environment Detection

def test_finds_venv_from_file_path() -> None:
    # Validates: Hook finds project .venv by traversing up from file

2. PYTHONPATH Configuration

def test_sets_pythonpath_for_src_layout() -> None:
    # Validates: PYTHONPATH=src added when src/ exists

3. Project Root Detection

def test_finds_project_root_from_nested_file() -> None:
    # Validates: Correct project root found from deeply nested files

4. Working Directory for Type Checkers

def test_runs_from_project_root() -> None:
    # Validates: Type checkers run with cwd=project_root
    # Critical for pyrightconfig.json to be found

5. Temp Files in Project

def test_temp_file_in_correct_location() -> None:
    # Validates: Temp files created in <project>/.tmp/, not /tmp
    # Critical for config inheritance

6. Configuration File Inheritance

def test_pyrightconfig_in_root() -> None:
    # Validates: pyrightconfig.json found and respected

7. Error Formatting

def test_basedpyright_formatting() -> None:
def test_pyrefly_formatting() -> None:
def test_sourcery_formatting() -> None:
    # Validates: All linters produce formatted, readable errors

Edge Cases Handled

  1. Nested Projects: Uses closest .venv and config
  2. Missing Tools: Returns warning, doesn't crash
  3. Timeout/Errors: Handled gracefully
  4. Permission Errors: Propagated correctly
  5. Invalid Syntax: Analyzed safely
  6. No Project Markers: Fallback behavior works
  7. Flat vs Src Layout: Both work correctly

What This Means

Every hook interaction scenario has been tested:

  • Different project layouts: Flat, src/, nested
  • Configuration scenarios: All config files detected correctly
  • Virtual environment variations: Fallback works correctly
  • Type checker states: Disabled, missing, crashing all handled
  • File locations: Root, src/, tests/, deeply nested all work
  • Error conditions: Syntax errors, permissions, timeouts handled
  • Temp file management: Created in project, cleaned up properly

No More Surprises

These tests ensure:

  1. biz-bud imports work (PYTHONPATH set correctly)
  2. pyrightconfig.json respected (CWD set to project root)
  3. Project .venv used (not claude-scripts)
  4. Temp files inherit config (created in project)
  5. All error messages are readable
  6. No crashes on edge cases

All 62 tests passing means the hooks are production-ready.