51 inline const char* health_check_to_string(
HealthCheck c) {
54 return "filter_too_much";
58 return "test_cases_too_large";
60 return "large_initial_test_case";
138 Kind kind()
const {
return kind_; }
139 const std::string& path()
const {
return path_; }
143 Database(
Kind k, std::string p) : kind_(k), path_(std::move(p)) {}
153 inline bool in_ci() {
157 const char* expected;
159 static constexpr CiVar ci_vars[] = {
161 {
"TF_BUILD",
"true"},
162 {
"BUILDKITE",
"true"},
163 {
"CIRCLECI",
"true"},
164 {
"CIRRUS_CI",
"true"},
165 {
"CODEBUILD_BUILD_ID",
nullptr},
166 {
"GITHUB_ACTIONS",
"true"},
167 {
"GITLAB_CI",
nullptr},
168 {
"HEROKU_TEST_RUN_ID",
nullptr},
169 {
"TEAMCITY_VERSION",
nullptr},
171 for (
const CiVar& v : ci_vars) {
172 const char* value = std::getenv(v.name);
173 if (value ==
nullptr) {
176 if (v.expected ==
nullptr ||
177 std::strcmp(value, v.expected) == 0) {
Configure the Hegel database.
Definition settings.h:112
static Database disabled()
Definition settings.h:128
static Database from_path(std::string path)
Definition settings.h:133
Kind
The configuration of the database. See the methods below.
Definition settings.h:115
@ Path
Use the given directory as the database.
Definition settings.h:119
@ Disabled
Disable the database.
Definition settings.h:118
@ Unset
Definition settings.h:116
static Database unset()
Definition settings.h:124
Main namespace.
Definition config.h:29
const char * verbosity_to_string(Verbosity v)
Convert Verbosity enum to command-line string.
Definition settings.h:26
Backend
Source of randomness the engine draws from.
Definition settings.h:99
@ Auto
Definition settings.h:100
@ Urandom
Definition settings.h:104
@ Default
Definition settings.h:102
HealthCheck
Health checks.
Definition settings.h:43
@ TestCasesTooLarge
Generated test cases are too large.
Definition settings.h:46
@ TooSlow
Test cases are running too slowly.
Definition settings.h:45
@ FilterTooMuch
Test filters out too many generated examples.
Definition settings.h:44
@ LargeInitialTestCase
First generated test case is unusually large.
Definition settings.h:47
std::vector< HealthCheck > all_health_checks()
All health checks, suitable for full suppression.
Definition settings.h:70
Verbosity
Verbosity levels.
Definition settings.h:14
@ Quiet
Minimal output (used by TUI).
Definition settings.h:15
@ Normal
Default - standard test output.
Definition settings.h:16
@ Debug
Maximum verbosity + engine-side shrinker tracing.
Definition settings.h:18
@ Verbose
More detailed output.
Definition settings.h:17
std::vector< Phase > all_phases()
All phases, the default for Settings::phases.
Definition settings.h:91
Phase
Phases of a property-test run.
Definition settings.h:79
@ Shrink
Shrink failing examples toward minimal counterexamples.
Definition settings.h:84
@ Generate
Randomly generate fresh test cases.
Definition settings.h:82
@ Explicit
Run hard-coded explicit examples.
Definition settings.h:80
@ Target
Hill-climb toward observed target scores.
Definition settings.h:83
@ Reuse
Replay counterexamples persisted in the database.
Definition settings.h:81
Configuration options for hegel::test().
Definition settings.h:196
bool derandomize
Definition settings.h:210
bool print_blob
Definition settings.h:220
Backend backend
Definition settings.h:242
std::optional< uint64_t > seed
Explicit seed for the test.
Definition settings.h:205
std::vector< Phase > phases
Definition settings.h:238
std::optional< std::string > database_key
Definition settings.h:229
int64_t stateful_step_count
Definition settings.h:248
std::optional< uint64_t > test_cases
Definition settings.h:199
Verbosity verbosity
Verbosity level. Defaults to Verbosity::Normal.
Definition settings.h:202
Database database
Definition settings.h:224
std::vector< HealthCheck > suppress_health_check
Definition settings.h:233
bool report_multiple_failures
Definition settings.h:215