platform-raspberrypi
platform-raspberrypi copied to clipboard
feat: Add comprehensive Python testing infrastructure
Add Comprehensive Python Testing Infrastructure
Summary
This PR establishes a complete testing infrastructure for the Raspberry Pi RP2040 platform project, providing developers with immediate capability to write and run tests effectively.
Changes Made
Package Management
-
Set up Poetry as the package manager with
pyproject.tomlconfiguration - Configured package-mode = false since this is a platform package, not a library
- Added PlatformIO dependency to support platform development
Testing Dependencies
- pytest (v8.0.0+) - Main testing framework
- pytest-cov (v4.0.0+) - Coverage reporting and analysis
- pytest-mock (v3.12.0+) - Advanced mocking utilities
- All added as development dependencies for clean separation
Testing Configuration
-
Comprehensive pytest configuration in
pyproject.toml:- Test discovery patterns for flexible test organization
- Coverage settings with 80% threshold requirement
- HTML and XML coverage report generation
- Custom test markers:
unit,integration,slow - Strict configuration and warning filters
-
Coverage configuration with:
- Source inclusion for
platform.pyandbuilder/directory - Exclusion of test files, examples, and cache directories
- Missing line reporting enabled
- Source inclusion for
Directory Structure
-
Organized test directories:
tests/ ├── __init__.py ├── conftest.py # Shared fixtures and configuration ├── unit/ │ └── __init__.py ├── integration/ │ └── __init__.py └── test_setup_validation.py
Shared Testing Utilities
-
Comprehensive fixtures in
conftest.py:-
temp_dir- Temporary directory management -
mock_platform_variables- Platform configuration mocking -
mock_board_config- Board configuration utilities -
sample_board_manifest- Test data for board configurations -
mock_debug_config- Debug configuration mocking -
mock_file_system- File system structure mocking -
clean_environment- Environment cleanup between tests
-
Development Environment
-
Updated
.gitignorewith testing-related entries:- Test cache and coverage files
- Virtual environments and build artifacts
- IDE files and OS-specific items
- Claude settings directory
Validation
-
Setup validation tests to verify:
- Python import capabilities
- Testing framework installation
- Coverage tools availability
- Project structure integrity
- Platform module importability
- Test markers functionality
Running Tests
Basic test execution:
poetry run pytest
Run specific test categories:
poetry run pytest -m unit # Unit tests only
poetry run pytest -m integration # Integration tests only
poetry run pytest -m "not slow" # Exclude slow tests
Coverage reporting:
poetry run pytest --cov # With coverage
poetry run pytest --no-cov # Without coverage
Test discovery and verbose output:
poetry run pytest -v # Verbose output
poetry run pytest tests/unit/ # Specific directory
Installation
-
Install dependencies:
poetry install -
Verify setup:
poetry run pytest tests/test_setup_validation.py -v
Notes
-
No lock files in .gitignore:
poetry.lockshould be committed for reproducible builds - PlatformIO integration: Tests can import and test platform modules with appropriate mocking
- Flexible configuration: Easy to adjust coverage thresholds and test discovery patterns
- Ready for CI/CD: Configuration supports automated testing pipelines
The testing infrastructure is now ready for immediate use. Developers can start writing unit and integration tests using the provided fixtures and configuration.
🤖 Generated with Claude Code