Skip to content

Bump hegeltest from 0.36.1 to 0.39.4 - #103

Merged
xd009642 merged 1 commit into
masterfrom
dependabot/cargo/hegeltest-0.39.4
Sep 8, 2026
Merged

xd009642 merged 1 commit into
masterfrom
dependabot/cargo/hegeltest-0.39.4

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 8, 2026

Copy link
Copy Markdown
Contributor

Bumps hegeltest from 0.36.1 to 0.39.4.

Release notes

Sourced from hegeltest's releases.

v0.37.5

This release updates the hegeltest-c dependency to 0.37.5.

libhegel C ABI

This patch improves how the failure database is maintained. New entries are saved before the entries they supersede are removed, so interrupting a run mid-shrink can no longer lose a failure. A shrink no longer deposits its chain of intermediate improvements into the secondary corpus, and the secondary corpus is capped at 50 entries. An entry whose bytes still serve as another failure's latest save is never deleted.

v0.37.4

This release updates the hegeltest-c dependency to 0.37.4.

libhegel C ABI

This patch fixes a missed flakiness detection during targeting. A test whose data generation first changed shape during the targeted-search phase was silently ignored and the run carried on. It now fails the run with the usual non-determinism diagnostic, matching every other phase.

v0.37.3

This release updates the hegeltest-c dependency to 0.37.3.

libhegel C ABI

This patch bounds zlib decompression when decoding a failure blob. A corrupt or hostile reproduce_failure blob could previously force an arbitrarily large allocation. Decoding now rejects payloads that inflate past 16 MiB, and the encoder falls back to the uncompressed encoding for anything that large, so every blob it emits still decodes.

v0.37.2

This release updates the hegeltest-c dependency to 0.37.2.

libhegel C ABI

This patch fixes a crash when shrinking a failure in a flaky test. When re-executing the test produced a shorter run than the failure being shrunk, a deletion pass could panic with an index out of bounds. That shrink attempt is now rejected and shrinking continues.

v0.37.1

This patch suppresses HealthCheck::TooSlow by default in CI, matching Hypothesis's CI profile. Explicit Settings::suppress_health_check calls still replace the default.

libhegel C ABI

This patch suppresses TooSlow by default in CI, matching Hypothesis's CI profile. Calls to hegel_settings_set_suppress_health_check still replace the default.

v0.37.0

This release adds #[invariant(always_run)] for stateful tests (#449). A plain #[invariant] is checked in full on the machine's initial and final state and sampled in between; an always-run invariant runs after every rule (at every join point, for concurrent machines) instead. Use it for invariants that must observe every intermediate state, including invariants that mutate state when checked:

#[invariant(always_run)]
fn no_unobserved_writes(&mut self, _: TestCase) {
    assert!(self.writes_since_last_check <= 1);
    self.writes_since_last_check = 0;
}

For hand-written StateMachine implementations this is a breaking change: invariants() now returns Vec<Invariant<Self>> instead of Vec<Rule<Self>> — construct entries with Invariant::new (sampled) or Invariant::new_always_run. ConcurrentInvariant gains the same always_run field and new_always_run constructor.

libhegel C ABI

... (truncated)

Changelog

Sourced from hegeltest's changelog.

0.39.4 - 2026-09-04

This patch improves shrinking for collections whose elements each cost more than eight choices to generate. Previously such an element could only be deleted a few choices at a time, so shrunk counterexamples kept collection elements with no effect on the failure.

0.39.3 - 2026-09-04

This patch improves the shrinking of stateful test failures: shrunk rule sequences no longer keep redundant steps, such as inserts whose effect a later step overwrites (#441). Previously a step could only be deleted as a short run of individual choices, so machines with several invariants or draw-heavy rules shrank to sequences padded with no-op steps.

0.39.2 - 2026-09-04

This patch fixes shrinking and the LargeInitialTestCase health check for stateful tests.

0.39.1 - 2026-09-04

This patch improves the ergonomics of draw-time printing:

  • BoxedGenerator<T> is now a PrintableGenerator whenever T implements PrettyPrintable, printing drawn values by their own representation. A .boxed() in a generator definition no longer forces printing annotations onto every downstream draw site. .boxed_printable() remains the way to keep a custom printing strategy through the erasure.
  • PrettyPrintable is implemented for more standard-library types: the range types and Bound, VecDeque, LinkedList, BinaryHeap, the NonZero integers, Cow, and Path/PathBuf. The chrono, jiff, and serde_json integrations add impls for Month, Days, Months, IsoWeek, TimeZone, AmbiguousOffset, and Map<String, Value>. Every generator gs::default() returns can now be passed to tc.draw (several, such as PathBuf's, could previously only be drawn silently).
  • Generators defined with derive_generator! implement PrintableGenerator whenever every field type is PrettyPrintable, printing Name { field: value } expressions.
  • Draws in helper functions no longer have to print as the anonymous draw_1, draw_2, …. Marking the helper #[hegel::test_helper] names its draws after their bindings, the same rewrite #[hegel::test] applies to a test body, and the new TestCase::draw_named reports a single draw under an explicit name.
  • The new hegel::prelude module exports the traits and entry points most tests need, so one use hegel::prelude::*; covers them.
  • #[derive(PrettyPrintable)] on a type with a non-printable field now reports an error pointing at that field, stating that every field must be PrettyPrintable and suggesting #[pretty(debug)], instead of draw-site advice attached to the derive. Draw-site printability errors now lead with the once-per-type fix (implementing PrettyPrintable) and explain how -> impl Generator<..> return types and .boxed() interact with printability.
  • The hegel::pretty module docs now explain the whole printing system: what is printable out of the box, how to make your own types printable, the escape hatches for foreign types, type erasure, and draw naming.

0.39.0 - 2026-09-03

This release removes the antithesis cargo feature. The Antithesis integration is now always compiled in and activates automatically when the ANTITHESIS_OUTPUT_DIR environment variable is set, so running inside Antithesis no longer requires a feature flag and no longer fails when the flag is missing. Remove features = ["antithesis"] from your hegeltest dependency; Cargo rejects unknown features, so builds that still name it will not compile until it is removed.

0.38.1 - 2026-09-03

This patch fixes the ordering of step labels in stateful counterexamples. Each label used to print after the draws its rule made, so reading a failing sequence meant shifting every label back by one. Notes are also no longer deferred while an engine span is open, only while a drawn value is mid-print, so a note can never trail the output of a later draw.

Each step now prints as a block, with the rule's draws and notes scoped to it:

Step 1: add {
  let n = 1;
}

#[rule] and #[invariant] bodies now rewrite tc.draw calls the way #[hegel::test] bodies do, so a rule's draws print under their variable names (let n = 1; instead of let draw_1 = 1;) and tc.target calls get per-expression labels. Draw names are scoped to the rule invocation: a name drawn once per rule prints bare in every step, and only names drawn repeatedly within one invocation get a numeric suffix.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [hegeltest](https://github.com/hegeldev/hegel-rust) from 0.36.1 to 0.39.4.
- [Release notes](https://github.com/hegeldev/hegel-rust/releases)
- [Changelog](https://github.com/hegeldev/hegel-rust/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hegeldev/hegel-rust/commits)

---
updated-dependencies:
- dependency-name: hegeltest
  dependency-version: 0.39.4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Sep 8, 2026
@xd009642
xd009642 merged commit 22a5972 into master Sep 8, 2026
1 check passed
@dependabot
dependabot Bot deleted the dependabot/cargo/hegeltest-0.39.4 branch September 8, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant