Skip to main content

Settings

Struct Settings 

Source
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

Source

pub fn new() -> Self

Create settings with defaults. Detects CI environments automatically.

Source

pub fn mode(self, mode: Mode) -> Self

Set the execution mode. Defaults to Mode::TestRun.

Source

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.

Source

pub fn test_cases(self, n: u64) -> Self

Set the number of test cases to run (default: 100).

Source

pub fn verbosity(self, verbosity: Verbosity) -> Self

Set the verbosity level.

Source

pub fn seed(self, seed: Option<u64>) -> Self

Set a fixed seed for reproducibility, or None for random.

Source

pub fn derandomize(self, derandomize: bool) -> Self

When true, use a fixed seed derived from the test name. Enabled by default in CI.

Source

pub fn database(self, database: Option<String>) -> Self

Set the database path for storing failing examples, or None to disable.

Source

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]);
Source

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.

Source

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);
}
Source

pub fn has_phase(&self, phase: Phase) -> bool

Returns true if the given phase is enabled in these settings.

Source

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.

Trait Implementations§

Source§

impl Clone for Settings

Source§

fn clone(&self) -> Settings

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Settings

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Settings

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.