ColXLM icon indicating copy to clipboard operation
ColXLM copied to clipboard

feat: Set up comprehensive Python testing infrastructure with Poetry

Open llbbl opened this issue 3 months ago • 0 comments

Set up Python Testing Infrastructure

Summary

This PR establishes a comprehensive testing infrastructure for the colXLM project using Poetry as the package manager and pytest as the testing framework.

Changes Made

Package Management

  • Poetry Configuration: Added pyproject.toml with Poetry configuration for dependency management
  • Testing Dependencies: Installed core testing packages:
    • pytest (v7.4.0+) - Main testing framework
    • pytest-cov (v4.1.0+) - Coverage reporting
    • pytest-mock (v3.11.1+) - Mocking utilities

Testing Configuration

  • pytest Configuration: Comprehensive pytest settings in pyproject.toml:

    • Test discovery patterns for multiple file naming conventions
    • Coverage reporting (HTML, XML, terminal) with configurable thresholds
    • Custom markers: unit, integration, slow
    • Strict configuration and markers enforcement
  • Coverage Configuration: Detailed coverage settings:

    • Source code inclusion/exclusion patterns
    • HTML report generation in htmlcov/
    • XML report for CI/CD integration
    • Configurable coverage thresholds

Directory Structure

  • Testing Directories: Created proper test organization:
    tests/
    ├── __init__.py
    ├── conftest.py
    ├── test_setup_validation.py
    ├── unit/
    │   ├── __init__.py
    │   └── test_parameters.py
    └── integration/
        └── __init__.py
    

Shared Testing Utilities

  • Fixtures: Comprehensive shared fixtures in tests/conftest.py:
    • temp_dir - Temporary directory management
    • mock_tokenizer, mock_model - ML model mocking
    • sample_embeddings, mock_faiss_index - Retrieval testing
    • sample_config - Configuration testing
    • Auto-seeding for reproducible tests

Infrastructure Validation

  • Validation Tests: Created test_setup_validation.py with tests for:
    • Python version compatibility
    • Package imports and availability
    • Project structure validation
    • Testing directory structure verification
    • Fixture functionality testing
    • Marker system validation

Build Configuration

  • Updated .gitignore: Added comprehensive exclusions for:
    • Testing artifacts (.pytest_cache/, .coverage, htmlcov/)
    • Build artifacts (build/, dist/, *.egg-info/)
    • Virtual environments and IDE files
    • Claude Code settings (.claude/)

Running Tests

Basic Commands

# Install dependencies
poetry install

# Run all tests
poetry run pytest

# Run with verbose output
poetry run pytest -v

# Run specific test types
poetry run pytest -m "unit"        # Unit tests only  
poetry run pytest -m "integration" # Integration tests only
poetry run pytest -m "not slow"    # Skip slow tests

Coverage Reports

# Generate HTML coverage report
poetry run pytest --cov-report=html

# View coverage in browser
open htmlcov/index.html

Test Selection

# Run specific test file
poetry run pytest tests/test_setup_validation.py

# Run specific test
poetry run pytest tests/test_setup_validation.py::test_python_version

Development Workflow

  1. Write Tests: Add tests in appropriate subdirectories (tests/unit/, tests/integration/)
  2. Use Fixtures: Leverage shared fixtures from conftest.py
  3. Mark Tests: Use markers (@pytest.mark.unit, @pytest.mark.integration, @pytest.mark.slow)
  4. Check Coverage: Ensure new code maintains coverage standards
  5. Run Validation: Use poetry run pytest to verify all tests pass

Notes

  • Coverage Threshold: Currently set to 1% for infrastructure setup; adjust to 80% when implementing actual tests
  • Poetry Lock File: The poetry.lock file is intentionally tracked for reproducible builds
  • Marker System: Custom markers are configured to organize test types effectively
  • Fixture Scope: Auto-use fixtures ensure consistent test environments

Validation Results

All infrastructure validation tests pass:

  • ✅ Python version compatibility (3.8+)
  • ✅ Testing package imports
  • ✅ Project structure validation
  • ✅ Directory structure verification
  • ✅ Fixture functionality
  • ✅ Marker system operation
  • ✅ Coverage configuration

🤖 Generated with Claude Code

llbbl avatar Sep 03 '25 02:09 llbbl