Expand description
The Forge test runner.
Re-exportsยง
use crate::MultiContractRunner;๐use crate::TestFilter;๐use crate::coverage::HitMaps;๐use crate::fuzz::BaseCounterExample;๐use crate::fuzz::FuzzTestResult;๐use crate::multi_runner::FuzzMinimizeConfig;๐use crate::multi_runner::FuzzMinimizeMode;๐use crate::multi_runner::FuzzMinimizeObservation;๐use crate::multi_runner::LibraryDeployment;๐use crate::multi_runner::TestContract;๐use crate::multi_runner::TestFunctionMatcher;๐use crate::multi_runner::TestRunnerConfig;๐use crate::multi_runner::is_generated_symbolic_regression_contract;๐use crate::progress::TestsProgress;๐use crate::result::InvariantFailure;๐use crate::result::InvariantOutcome;๐use crate::result::InvariantPredicateResult;๐use crate::result::SuiteResult;๐use crate::result::SymbolicArtifactRef;๐use crate::result::SymbolicCallTrace;๐use crate::result::SymbolicCorpusSeedMetadata;๐use crate::result::SymbolicCorpusSeedRef;๐use crate::result::SymbolicCounterexample;๐use crate::result::SymbolicCounterexampleArtifact;๐use crate::result::SymbolicCounterexampleArtifactKind;๐use crate::result::SymbolicCounterexampleCall;๐use crate::result::SymbolicCounterexampleMinimization;๐use crate::result::SymbolicCounterexampleReplaySemantics;๐use crate::result::SymbolicCounterexampleTestIdentity;๐use crate::result::SymbolicInvariantArtifactFailure;๐use crate::result::SymbolicInvariantFailureSite;๐use crate::result::SymbolicReplayMetadata;๐use crate::result::SymbolicReplayStatus;๐use crate::result::SymbolicResult;๐use crate::result::TestKind;๐use crate::result::TestResult;๐use crate::result::TestSetup;๐use crate::result::TestStatus;๐use crate::result::invariant_campaign_display_name;๐use crate::result::invariant_kind;๐use crate::symbolic_minimizer::MinimizedSequence;๐use crate::symbolic_minimizer::minimize_sequence_counterexample;๐use crate::symbolic_minimizer::minimize_single_call_counterexample;๐use alloy_dyn_abi::DynSolValue;๐use alloy_dyn_abi::JsonAbiExt;๐use alloy_json_abi::Function;๐use alloy_json_abi::JsonAbi;๐use alloy_json_abi::StateMutability;๐use alloy_primitives::Address;๐use alloy_primitives::B256;๐use alloy_primitives::Bytes;๐use alloy_primitives::I256;๐use alloy_primitives::Selector;๐use alloy_primitives::U256;๐use alloy_primitives::address;๐use alloy_primitives::hex;๐use alloy_primitives::hex;๐use alloy_primitives::keccak256;๐use alloy_primitives::map::Entry;๐use alloy_primitives::map::HashMap;๐use alloy_primitives::map::HashSet;๐use eyre::Result;๐use foundry_common::LIBRARY_DEPLOYER;๐use foundry_common::TestFunctionExt;๐use foundry_common::TestFunctionKind;๐use foundry_common::contracts::ContractsByAddress;๐use foundry_compilers::utils::canonicalized;๐use foundry_config::Config;๐use foundry_config::FuzzConfig;๐use foundry_config::FuzzCorpusConfig;๐use foundry_config::FuzzDictionaryConfig;๐use foundry_config::InlineConfig;๐use foundry_config::InvariantConfig;๐use foundry_config::InvariantDepthMode;๐use foundry_config::SymbolicConfig;๐use foundry_evm::constants::CALLER;๐use foundry_evm::constants::MAGIC_ASSUME;๐use foundry_evm::core::backend::DatabaseExt;๐use foundry_evm::core::evm::FoundryEvmNetwork;๐use foundry_evm::decode::RevertDecoder;๐use foundry_evm::decode::SkipReason;๐use foundry_evm::executors::CallResult;๐use foundry_evm::executors::DynamicTargetCtx;๐use foundry_evm::executors::EvmError;๐use foundry_evm::executors::Executor;๐use foundry_evm::executors::ITest;๐use foundry_evm::executors::InvariantReplayOptions;๐use foundry_evm::executors::MinimizationReplayInput;๐use foundry_evm::executors::RawCallResult;๐use foundry_evm::executors::ShowmapOpts;๐use foundry_evm::executors::ShowmapReplayTarget;๐use foundry_evm::executors::StatelessReplayTarget;๐use foundry_evm::executors::canonical_replay_dirs;๐use foundry_evm::executors::fuzz::FuzzedExecutor;๐use foundry_evm::executors::invariant::CheckSequenceFailureSite;๐use foundry_evm::executors::invariant::CheckSequenceOptions;๐use foundry_evm::executors::invariant::CheckSequenceOutcome;๐use foundry_evm::executors::invariant::HandlerAssertionFailure;๐use foundry_evm::executors::invariant::InvariantExecutor;๐use foundry_evm::executors::invariant::InvariantFuzzError;๐use foundry_evm::executors::invariant::ReplayErrorResult;๐use foundry_evm::executors::invariant::check_sequence;๐use foundry_evm::executors::invariant::did_fail_on_assert;๐use foundry_evm::executors::invariant::execute_tx;๐use foundry_evm::executors::invariant::execute_tx_and_register_created;๐use foundry_evm::executors::invariant::handler_edge_fingerprint;๐use foundry_evm::executors::invariant::replay_error;๐use foundry_evm::executors::invariant::replay_handler_failure_sequence;๐use foundry_evm::executors::invariant::replay_run;๐use foundry_evm::executors::persist_corpus_seed;๐use foundry_evm::executors::read_corpus_dir;๐use foundry_evm::executors::replay_corpus_to_showmap;๐use foundry_evm::executors::replay_sequence_for_minimization;๐use foundry_evm::executors::should_ignore_revert;๐use foundry_evm::fuzz::BasicTxDetails;๐use foundry_evm::fuzz::CallDetails;๐use foundry_evm::fuzz::CounterExample;๐use foundry_evm::fuzz::FuzzFixtures;๐use foundry_evm::fuzz::fixture_name;๐use foundry_evm::fuzz::invariant::FuzzRunIdentifiedContracts;๐use foundry_evm::fuzz::invariant::InvariantContract;๐use foundry_evm::fuzz::invariant::InvariantSettings;๐use foundry_evm::fuzz::invariant::SenderFilters;๐use foundry_evm::fuzz::invariant::is_optimization_invariant;๐use foundry_evm::fuzz::strategies::EvmFuzzState;๐use foundry_evm::inspectors::CmpOperands;๐use foundry_evm::inspectors::EdgeCovConfig;๐use foundry_evm::inspectors::EdgeCovKind;๐use foundry_evm::inspectors::cheatcodes::Vm::AccountAccess;๐use foundry_evm::revm::bytecode::opcode;๐use foundry_evm::revm::primitives::hardfork::SpecId;๐use foundry_evm::traces::TraceKind;๐use foundry_evm::traces::TraceRequirements;๐use foundry_evm::traces::load_contracts;๐use foundry_evm_networks::NetworkVariant;๐use foundry_evm_symbolic::ExecutorView;๐use foundry_evm_symbolic::SymbolicBranchTarget;๐use foundry_evm_symbolic::SymbolicConcreteInput;๐use foundry_evm_symbolic::SymbolicExecutor;๐use foundry_evm_symbolic::SymbolicInvariantCandidateInput;๐use foundry_evm_symbolic::SymbolicInvariantCounterexampleKind;๐use foundry_evm_symbolic::SymbolicInvariantRunInput;๐use foundry_evm_symbolic::SymbolicInvariantRunResult;๐use foundry_evm_symbolic::SymbolicInvariantStep;๐use foundry_evm_symbolic::SymbolicInvariantTarget;๐use foundry_evm_symbolic::SymbolicRunInput;๐use foundry_evm_symbolic::SymbolicRunResult;๐use foundry_evm_symbolic::SymbolicStats;๐use foundry_evm_symbolic::SymbolicStopReason;๐use foundry_evm_symbolic::SymbolicStorageAssignment;๐use itertools::Itertools;๐use proptest::test_runner::RngAlgorithm;๐use proptest::test_runner::TestError;๐use proptest::test_runner::TestRng;๐use proptest::test_runner::TestRunner;๐use serde::Deserialize;๐use serde::Deserialize;๐use serde::Serialize;๐use serde::Serialize;๐use std::borrow::Cow;๐use std::collections::BTreeMap;๐use std::ops::Deref;๐use std::path::Path;๐use std::path::PathBuf;๐use std::sync::Arc;๐use std::sync::Mutex;๐use std::time::Instant;๐use tokio::signal;๐use tracing::Span;๐use rayon::prelude::*;๐
Structsยง
- Confirmed
Frontier ๐Invariant Failure - An invariant failure confirmed while solving a captured fuzz frontier.
- Contract
Runner - A type that executes all tests of a contract
- Contract
Runner ๐Context - Function
Runner ๐ - Executes a single test function, returning a
TestResult. - Fuzz
Branch ๐Frontier Artifact - Fuzz
Branch ๐Frontier Operands - Fuzz
Branch ๐Frontier Record - Fuzz
Branch ๐Frontier Site - Invariant
Campaign ๐Scope - Invariant
Campaign ๐Selection - Invariant
Persisted ๐Failure - Holds data about a persisted invariant failure.
- Replayed
Invariant ๐Sequence - A replayed and shrunk invariant counterexample.
- Sequence
Artifact ๐Spec - Metadata for the symbolic artifact persisted with a replayed invariant sequence.
- Sequence
Replay ๐ - A stateful call sequence replay target shared by symbolic minimization and failure checks.
- Symbolic
Handler ๐Replay Storage - Symbolic storage assignments that only apply when replaying the exact recorded sequence.
Enumsยง
- Persisted
Fingerprint ๐Provenance - Reproducible edge-fingerprint algorithms and their capture configuration.
Constantsยง
- FUZZ_
BRANCH_ ๐FRONTIER_ FILE - FUZZ_
BRANCH_ ๐FRONTIER_ SCHEMA - STATEFUL_
FUZZ_ ๐BRANCH_ FRONTIER_ SCHEMA
Functionsยง
- base_
counterexample_ ๐to_ tx - base_
counterexamples ๐ - Converts campaign transactions into displayable counterexample calls.
- base_
counterexamples_ ๐to_ txes - Converts a persisted counterexample to
BasicTxDetails, settingshow_solidityin place. - comparison_
result ๐ - contract_
short_ ๐name - Returns the contract name without the file path prefix.
- corpus_
has_ ๐entries - Returns whether any canonical replay directory under
dirholds a corpus entry. - count_
runnable_ ๐invariant_ campaign_ anchors - effective_
test_ ๐function_ kind - failed_
invariant_ ๐calls - Returns the failing call sequence of a replayable invariant error.
- frontier_
comparison_ ๐flipped - frontier_
filter_ ๐display - frontier_
selector ๐ - function_
matches_ ๐network_ pass - fuzz_
test_ ๐path_ name - Returns a stable path component that distinguishes overloaded fuzz tests.
- fuzzer_
with_ ๐cases - handler_
failure_ ๐file - inline_
config_ ๐for - invariant_
corpus_ ๐dir - Returns the corpus directory of a shared contract campaign or an isolated campaign.
- invariant_
failure_ ๐file - Returns the current invariant failure cache path.
- invariant_
frontier_ ๐dir - Returns the collision-free directory for one stateful frontier campaign.
- invariant_
handler_ ๐failure_ name - invariant_
suite_ ๐configs_ match - invariant_
suite_ ๐paths - Sets the invariant corpus directory and returns the contract-level failure directory.
- legacy_
fuzz_ ๐corpus_ dir - Returns the legacy unqualified corpus when the qualified corpus has no entries.
- narrow_
generated_ ๐corpus_ root - Narrows a generated corpus root to the per-test directory when it exists.
- parse_
frontier_ ๐selectors - persisted_
call_ ๐sequence - Helper function to load failed call sequence from file. Ignores failure if generated with different invariant settings than the current ones.
- persisted_
invariant_ ๐failure - Loads a persisted invariant failure from the new cache path, falling back to the legacy path.
- record_
handler_ ๐failure - Persists a handler-side assertion bug with symbolic replay storage.
- record_
invariant_ ๐failure - Persists an invariant failure, with any symbolic replay storage and confirmed failure site.
- replay_
fuzz_ ๐minimize - Replays one corpus-minimization candidate and records its coverage observation.
- same_
sequence_ ๐failure - Returns
trueif two sequence replays failed in the same way at the same site. - sample_
stateful_ ๐frontiers - sanitize_
symbolic_ ๐artifact_ component - select_
context_ ๐diverse_ frontiers - select_
invariant_ ๐campaigns - select_
stateful_ ๐frontiers - should_
symbolically_ ๐import_ fuzz_ corpus - stable_
hashed_ ๐component - symbolic_
artifact_ ๐file_ name - symbolic_
invariant_ ๐counterexample_ calls - symbolic_
invariant_ ๐unsupported_ domain_ reason - test_
paths ๐ - Helper function to set test corpus dir and to compose persisted failure paths.
- warn_
fork_ ๐block_ mismatch - Warns when a persisted failure is replayed on a different fork block than it was recorded on. Returns whether the blocks differ.
- warn_
unimported_ ๐frontiers - Warns about requested frontier
labels that the frontier file atpathdid not provide.
Type Aliasesยง
- Handler
Failure ๐Map - Persisted handler-side assertion bugs keyed by
(reverter, selector). - Symbolic
Handler ๐Storage Map - Symbolic replay storage for handler bugs keyed by
(reverter, selector, fingerprint).