use proptest::prelude::ProptestConfig;
use proptest::test_runner::FileFailurePersistence;
pub(crate) fn effective_cases(default_cases: u32, env_value: Option<&str>) -> u32 {
match env_value {
None => default_cases,
Some(value) => {
let cases = value
.parse::<u32>()
.unwrap_or_else(|_| invalid_proptest_cases(value));
cases.max(default_cases)
}
}
}
#[allow(clippy::panic)]
fn invalid_proptest_cases(value: &str) -> u32 {
panic!(
"PROPTEST_CASES must be an unsigned integer, got `{value}`. \
Use a numeric floor such as `PROPTEST_CASES=256`."
);
}
pub fn cfg(default_cases: u32) -> ProptestConfig {
let cases = effective_cases(
default_cases,
std::env::var("PROPTEST_CASES").ok().as_deref(),
);
ProptestConfig {
cases,
failure_persistence: Some(Box::new(FileFailurePersistence::SourceParallel(
"proptest-regressions",
))),
..ProptestConfig::default()
}
}