[integration-tests] port proptests to hegel state machines#291
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Ports the integration property tests from proptest/test-strategy strategies to Hegel state machines, adds shared Hegel drawing helpers, and bumps the workspace MSRV to Rust 1.86 (including CI/docs/badges).
Changes:
- Replaces several integration proptests with
#[hegel::state_machine]-based stateful tests and introduceshegel_supportutilities for generating keys/items. - Refactors panic-safety test infrastructure in
iddqd-test-utilsto remove proptest-generated op sequences and align with the new Hegel-based approach. - Updates MSRV to Rust 1.86 across workspace metadata, docs, and CI.
Reviewed changes
Copilot reviewed 15 out of 17 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/iddqd/tests/integration/tri_hash_map.rs | Migrates TriHashMap integration proptests to Hegel state machines + Hegel-based serde proptests. |
| crates/iddqd/tests/integration/main.rs | Registers the new hegel_support integration test module. |
| crates/iddqd/tests/integration/id_ord_map.rs | Migrates IdOrdMap integration proptests (including panic-safety) to Hegel state machines. |
| crates/iddqd/tests/integration/id_hash_map.rs | Migrates IdHashMap integration proptests (including panic-safety) to Hegel state machines. |
| crates/iddqd/tests/integration/hegel_support.rs | New shared generators/draw helpers for Hegel-based integration tests. |
| crates/iddqd/tests/integration/bi_hash_map.rs | Migrates BiHashMap integration proptests (including panic-safety) to Hegel state machines. |
| crates/iddqd/src/lib.rs | Updates documented MSRV to 1.86. |
| crates/iddqd/README.md | Updates MSRV badge and MSRV documentation text to 1.86. |
| crates/iddqd/Cargo.toml | Adds Hegel dependency for integration tests. |
| crates/iddqd-test-utils/src/test_item.rs | Removes permutation strategy helper previously used by proptest-based tests. |
| crates/iddqd-test-utils/src/panic_safety.rs | Removes proptest op-sequence types/constants; updates docs and observation labeling. |
| crates/iddqd-test-utils/src/naive_map.rs | Exposes items() accessor for Hegel lookup draws. |
| CHANGELOG.md | Notes MSRV bump in Unreleased section. |
| Cargo.toml | Bumps workspace rust-version to 1.86 and adds Hegel dependency to workspace deps. |
| Cargo.lock | Locks new transitive dependencies introduced by Hegel. |
| .gitignore | Ignores Hegel failure database directory (.hegel/). |
| .github/workflows/ci.yml | Updates CI MSRV runner version(s) to 1.86. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The newest versions of hegel no longer need `uv` or Python so I feel much better porting over the tests to this model. The commit is written slightly weirdly to try and preserve as much blame as possible. The next commit will fix up the indents and remove the shadow bindings (`let map = &mut self.map`), etc, with the idea that it'll be listed in `.git-blame-ignore-revs`. Also update the MSRV to 1.86 since Hegel requires this.
sunshowers
added a commit
that referenced
this pull request
Jun 25, 2026
) Followup from #291. Purely mechanical, no behavior change. This commit will be added to `.git-blame-ignore-revs` once it lands.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The newest versions of hegel no longer need
uvor Python so I feel much better porting over the tests to this model.The commit is written slightly weirdly to try and preserve as much blame as possible. The next commit will fix up the indents and remove the shadow bindings (
let map = &mut self.map), etc, with the idea that it'll be listed in.git-blame-ignore-revs.Also update the MSRV to 1.86 since Hegel requires this.