Changelog¶
All notable changes to rpytest are documented here.
[0.1.0] - 2024-01-15¶
Added¶
- Core Features
- Drop-in pytest replacement with Rust CLI
- Python daemon for test execution
- Native test collection via AST parsing
-
Full pytest fixture compatibility
-
Parallel Execution
- Built-in
-nflag for parallel test execution - LPT (Longest Processing Time) scheduling algorithm
-
Duration tracking for optimal load balancing
-
Sharding
--shardand--total-shardsfor CI distribution- Three strategies: duration_balanced, hash, round_robin
-
--shard-infofor distribution analysis -
Watch Mode
--watchfor automatic test re-runs- Dependency tracking for affected test detection
-
Debounced file change detection
-
Flakiness Detection
--rerunsfor automatic retry of failed tests--flaky-reportfor flakiness analysis-
Per-test flakiness tracking
-
Fixture Reuse
--reuse-fixturesfor session fixture persistence- Automatic invalidation on conftest changes
-
--session-statusfor fixture inspection -
Editor Integration
--editor-serverfor IDE integration- JSON-RPC protocol over stdio
-
Test discovery and run-at-cursor
-
Daemon Management
--daemonfor foreground daemon mode--daemon-idle-timeoutfor auto-shutdown-
Auto-start on first invocation
-
Output Formats
--jsonfor JSON output--junitxmlfor JUnit XML reports- Verbose/quiet modes
Performance¶
- CLI startup: <10ms (vs pytest ~200ms)
- Collection: 10-28x faster than pytest
- Memory: 6-8x less than pytest CLI
- Parallel efficiency: 90%+ utilization
[Unreleased]¶
Planned Features¶
- Incremental Collection: Only re-parse changed files
- Result Caching: Skip tests when code unchanged
- Distributed Execution: Run across multiple machines
- Coverage Integration: Native coverage support
- VS Code Extension: Official extension for VS Code
- Neovim Plugin: neotest adapter
Known Issues¶
- Some pytest plugins may not work correctly
- Custom conftest hooks have limited support
- Output format differs slightly from pytest
Versioning¶
rpytest follows Semantic Versioning:
- MAJOR: Breaking changes to CLI or behavior
- MINOR: New features, backwards compatible
- PATCH: Bug fixes, backwards compatible
Release Schedule¶
- Stable releases: As needed for significant features
- Patch releases: As needed for bug fixes
- Pre-releases: For testing new features
Upgrading¶
From 0.0.x to 0.1.x¶
No breaking changes. Direct upgrade supported.
Configuration Changes¶
Check pyproject.toml for deprecated options:
# Deprecated
[tool.rpytest]
workers = 4 # Use parallel instead
# Current
[tool.rpytest]
parallel = 4
Contributing¶
See CONTRIBUTING.md for:
- Development setup
- Code style guidelines
- Testing requirements
- Pull request process