This directory contains documentation for all defined invariant tests within contracts-bedrock
.
- AddressAliasing
- Burn
- CrossDomainMessenger
- Encoding
- Hashing
- L2OutputOracle
- OptimismPortal
- ResourceMetering
- SafeCall
- SystemConfig
To auto-generate documentation for invariant tests, run yarn autogen:invariant-docs
.
In order for an invariant test file to be picked up by the docgen script, it must adhere to the following conventions:
All forge
invariant tests must exist within the contracts/test/invariants
folder, and the file name should be
<ContractName>.t.sol
, where <ContractName>
is the name of the contract that is being tested.
All tests within forge
invariant files should follow the convention:
/**
* @custom:invariant <title>
*
* <longDescription>
*/
function invariant_<shortDescription>() external {
// ...
}
All echidna
invariant tests must exist within the contracts/echidna
folder, and the file name should be
Fuzz<ContractName>.sol
, where <ContractName>
is the name of the contract that is being tested.
All property tests within echidna
invariant files should follow the convention:
/**
* @custom:invariant <title>
*
* <longDescription>
*/
function echidna_<shortDescription>() external view returns (bool) {
// ...
}