feat: Set up comprehensive Python testing infrastructure
Set up Python Testing Infrastructure
Summary
This PR establishes a comprehensive testing infrastructure for the DNN decompiler project using Poetry as the package manager and pytest as the testing framework.
Changes Made
Package Management
- Poetry Configuration: Added
pyproject.tomlwith Poetry configuration - Dependencies: Configured core dependencies (numpy, onnx, capstone)
- Dev Dependencies: Added pytest, pytest-cov, and pytest-mock for testing
- Note:
angrandpatcherex2dependencies may require system-level installation due to compilation dependencies
Testing Framework
- Directory Structure: Created
tests/withunit/andintegration/subdirectories - Configuration: Comprehensive pytest configuration in
pyproject.tomlincluding:- Test discovery patterns
- Coverage reporting (80% threshold)
- HTML and XML coverage output
- Custom markers:
unit,integration,slow
Shared Testing Resources
- Fixtures: Added
conftest.pywith reusable fixtures:- Temporary directories and file handling
- Mock objects for angr projects and capstone
- Sample numpy arrays and ONNX models
- Test configuration dictionaries
- Memory record mocks and lifted AST samples
Validation & Quality Assurance
- Validation Tests: Created
test_infrastructure_validation.pyto verify:- Basic pytest functionality
- Custom markers and fixtures
- Project structure integrity
- Coverage reporting functionality
- Module import capabilities
Development Environment
- Updated
.gitignore: Added comprehensive exclusions for:- Python cache files and bytecode
- Testing artifacts (.pytest_cache, coverage reports)
- Virtual environments and build artifacts
- Claude Code settings (.claude/*)
- IDE and OS generated files
Instructions for Running Tests
Basic Testing
# Run all tests
poetry run pytest
# Run with coverage
poetry run pytest --cov=src
# 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
# Generate HTML coverage report
poetry run pytest --cov=src --cov-report=html
# View coverage report
open htmlcov/index.html
Development Workflow
# Install dependencies
poetry install
# Run validation tests
poetry run pytest tests/test_infrastructure_validation.py -v
Configuration Notes
- Coverage Threshold: Set to 80% (configurable in pyproject.toml)
- Test Discovery: Automatically finds
test_*.pyand*_test.pyfiles - Markers: Use
@pytest.mark.unit,@pytest.mark.integration, or@pytest.mark.slow - Fixtures: Available across all tests via
conftest.py
Dependencies
The setup includes essential dependencies for the project:
- numpy: Numerical computing
- onnx: ONNX model handling
- capstone: Disassembly engine
- pytest ecosystem: Testing framework and plugins
Note: Some dependencies like angr and patcherex2 may need to be installed separately due to system-level compilation requirements.
Testing Infrastructure Features
✅ Package Management: Poetry with proper dependency management
✅ Test Framework: pytest with coverage reporting
✅ Directory Structure: Organized test hierarchy
✅ Shared Fixtures: Reusable test components
✅ Custom Markers: Categorized test execution
✅ Coverage Reports: HTML and XML output formats
✅ Validation Suite: Infrastructure verification tests
✅ Development Tools: Comprehensive gitignore and tooling setup