pub struct Settings { /* private fields */ }Expand description
Configuration for a Hegel test run.
Use builder methods to customize, then pass to [Hegel::settings] or
the settings parameter of #[hegel::test].
In CI environments (detected automatically), the database is disabled and tests are derandomized by default.
Implementations§
Source§impl Settings
impl Settings
Sourcepub fn mode(self, mode: Mode) -> Self
pub fn mode(self, mode: Mode) -> Self
Set the execution mode. Defaults to Mode::TestRun.
Sourcepub fn backend(self, backend: Backend) -> Self
pub fn backend(self, backend: Backend) -> Self
Select the randomness backend.
By default the backend is chosen automatically: Backend::Urandom
when running inside Antithesis, and Backend::Default otherwise.
Calling this pins the choice, overriding the automatic detection.
Sourcepub fn test_cases(self, n: u64) -> Self
pub fn test_cases(self, n: u64) -> Self
Set the number of test cases to run (default: 100).
Sourcepub fn seed(self, seed: Option<u64>) -> Self
pub fn seed(self, seed: Option<u64>) -> Self
Set a fixed seed for reproducibility, or None for random.
Sourcepub fn derandomize(self, derandomize: bool) -> Self
pub fn derandomize(self, derandomize: bool) -> Self
When true, use a fixed seed derived from the test name. Enabled by default in CI.
Sourcepub fn database(self, database: Option<String>) -> Self
pub fn database(self, database: Option<String>) -> Self
Set the database path for storing failing examples, or None to disable.
Sourcepub fn phases(self, phases: impl IntoIterator<Item = Phase>) -> Self
pub fn phases(self, phases: impl IntoIterator<Item = Phase>) -> Self
Set which test lifecycle phases to run.
Defaults to all phases: [Phase::Explicit, Phase::Reuse, Phase::Generate, Phase::Target, Phase::Shrink].
Example — skip shrinking (useful when you only need a witness, not a minimal counterexample):
use hegel::{Phase, Settings};
let s = Settings::new().phases([Phase::Reuse, Phase::Generate]);Sourcepub fn print_blob(self, print_blob: bool) -> Self
pub fn print_blob(self, print_blob: bool) -> Self
Print a copy-pasteable #[hegel::reproduce_failure("…")] line for the
counterexample when a test fails. Defaults to false.
The reproduce blob is always attached to the failure. This setting only controls whether it is printed to the failure output. Has effect only on the native backend.
Sourcepub fn suppress_health_check(
self,
checks: impl IntoIterator<Item = HealthCheck>,
) -> Self
pub fn suppress_health_check( self, checks: impl IntoIterator<Item = HealthCheck>, ) -> Self
Suppress one or more health checks so they do not cause test failure.
Health checks detect common issues like excessive filtering or slow
tests. Use this to suppress specific checks when they are expected.
Replaces any previously configured suppressions, like Settings::phases.
§Example
use hegel::{HealthCheck, Verbosity};
use hegel::generators as gs;
#[hegel::test(suppress_health_check = [HealthCheck::FilterTooMuch, HealthCheck::TooSlow])]
fn my_test(tc: hegel::TestCase) {
let n: i32 = tc.draw(gs::integers());
tc.assume(n > 0);
}Sourcepub fn has_phase(&self, phase: Phase) -> bool
pub fn has_phase(&self, phase: Phase) -> bool
Returns true if the given phase is enabled in these settings.
Sourcepub fn report_multiple_failures(self, report_multiple_failures: bool) -> Self
pub fn report_multiple_failures(self, report_multiple_failures: bool) -> Self
Control whether multi-bug runs report every distinct failing example or collapse to just the first one.
When true (the default), each distinct origin Hegel finds is surfaced
as its own diagnostic, and the final panic message reports the count of
distinct failures. Setting this to false makes Hegel collapse a
multi-bug run to one example — useful when you have a flaky predicate
that triggers several superficially-distinct failures whose root cause
is the same, and the extra reports are just noise.
Maps to Hypothesis’s report_multiple_bugs setting.