Skip to content

[integration-tests] port proptests to hegel state machines#291

Merged
sunshowers merged 1 commit into
mainfrom
hegel
Jun 25, 2026
Merged

[integration-tests] port proptests to hegel state machines#291
sunshowers merged 1 commit into
mainfrom
hegel

Conversation

@sunshowers

Copy link
Copy Markdown
Collaborator

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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 introduces hegel_support utilities for generating keys/items.
  • Refactors panic-safety test infrastructure in iddqd-test-utils to 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.

Comment thread Cargo.toml
Comment thread crates/iddqd/Cargo.toml
Comment thread crates/iddqd/tests/integration/hegel_support.rs Outdated
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 sunshowers merged commit 20e9cd5 into main Jun 25, 2026
35 checks passed
@sunshowers sunshowers deleted the hegel branch June 25, 2026 22:00
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants