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 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 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.
§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.