From 4ae90690264638f4cc527922495be5a0823f7d05 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Fri, 16 Jun 2023 14:35:24 -0400 Subject: [PATCH 01/17] chore: several updates on expect cheatcodes --- src/cheatcodes/expect-call.md | 2 +- src/cheatcodes/expect-revert.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cheatcodes/expect-call.md b/src/cheatcodes/expect-call.md index 71ff38aa9..7941000e1 100644 --- a/src/cheatcodes/expect-call.md +++ b/src/cheatcodes/expect-call.md @@ -27,7 +27,7 @@ function expectCall( ### Description -Expects that a call to a specified address `where`, where the call data either strictly or loosely matches `data`. The cheatcode can be called in two ways: +Expects that a call to a specified address `where`, where the call data either strictly or loosely matches `data`, in the next call's subcalls. The cheatcode can be called in two ways: - If no `count` parameter is specified, the call will be expected to be made at least the amount of times the cheatcode was called. For the same calldata, you cannot call the cheatcode with no `count` and then pass in a `count` parameter. - If `count` is specified, the call will be expected to be made strictly `count` times. For the same calldata, the `count` value cannot be overwritten with another cheatcode call, nor it can be increment by calling the cheatcode without a `count` parameter. diff --git a/src/cheatcodes/expect-revert.md b/src/cheatcodes/expect-revert.md index 504aea46b..97f675e61 100644 --- a/src/cheatcodes/expect-revert.md +++ b/src/cheatcodes/expect-revert.md @@ -18,9 +18,9 @@ function expectRevert(bytes calldata message) external; If the **next call** does not revert with the expected data `message`, then `expectRevert` will. -After calling `expectRevert`, calls to other cheatcodes before the reverting call are ignored. +After calling `expectRevert`, calls to other cheatcodes before the reverting call are ignored. However, using other `expect` cheatcodes with `expectRevert` is forbidden and will cause the test to fail. -This means, for example, we can call [`prank`](./prank.md) immediately before the reverting call. +This means, for example, we can call [`prank`](./prank.md) immediately before the reverting call, but we cannot call [`expectEmit`](./expect-emit.md) immediately before the reverting call. There are 3 signatures: From b8c1e40c0b791c3549de11173d016f5a3535692e Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:01:21 -0400 Subject: [PATCH 02/17] chore: move references up front --- src/SUMMARY.md | 123 +++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 60 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index e67f33757..421d7c0bb 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -14,67 +14,8 @@ - [Dependencies](./projects/dependencies.md) - [Project Layout](./projects/project-layout.md) -# Forge Overview +# References -- [Overview of Forge](forge/README.md) -- [Tests](./forge/tests.md) - - [Writing Tests](./forge/writing-tests.md) - - [Cheatcodes](./forge/cheatcodes.md) - - [Forge Standard Library Overview](./forge/forge-std.md) - - [Understanding Traces](./forge/traces.md) - - [Fork Testing](./forge/fork-testing.md) - -- [Advanced Testing](./forge/advanced-testing.md) - - [Fuzz Testing](./forge/fuzz-testing.md) - - [Invariant Testing](./forge/invariant-testing.md) - - [Differential Testing](./forge/differential-ffi-testing.md) - - - - - -- [Deploying and Verifying](./forge/deploying.md) -- [Gas Tracking](./forge/gas-tracking.md) - - [Gas Reports](./forge/gas-reports.md) - - [Gas Snapshots](./forge/gas-snapshots.md) -- [Debugger](./forge/debugger.md) - -# Cast Overview - -- [Overview of Cast](./cast/README.md) - -# Anvil Overview - -- [Overview of Anvil](./anvil/README.md) - -# Chisel Overview - -- [Overview of Chisel](./chisel/README.md) - -# Configuration - -- [Configuring with `foundry.toml`](./config/README.md) -- [Continuous Integration](./config/continous-integration.md) -- [Integrating with VSCode](./config/vscode.md) -- [Shell Autocompletion](./config/shell-autocompletion.md) -- [Static Analyzers](./config/static-analyzers.md) -- [Integrating with Hardhat](./config/hardhat.md) - -# Tutorials - -- [Best Practices](./tutorials/best-practices.md) -- [Creating an NFT with Solmate](./tutorials/solmate-nft.md) -- [Docker and Foundry](./tutorials/foundry-docker.md) -- [Testing EIP-712 Signatures](./tutorials/testing-eip712.md) -- [Solidity Scripting](./tutorials/solidity-scripting.md) -- [Forking Mainnet with Cast and Anvil](./tutorials/forking-mainnet-with-cast-anvil.md) -- [Learning Foundry Videos](./tutorials/learn-foundry.md) - - -# Appendix - -- [FAQ](./faq.md) -- [Help us improve Foundry](./contributing.md) - [References](./reference/README.md) - [`forge` Commands](./reference/forge/README.md) - [General Commands](./reference/forge/general-commands.md) @@ -346,6 +287,68 @@ - [`deriveRememberKey`](./reference/forge-std/derive-remember-key.md) - [Console Logging](./reference/forge-std/console-log.md) - [DSTest Reference](./reference/ds-test.md) + +# Forge Overview + +- [Overview of Forge](forge/README.md) +- [Tests](./forge/tests.md) + - [Writing Tests](./forge/writing-tests.md) + - [Cheatcodes](./forge/cheatcodes.md) + - [Forge Standard Library Overview](./forge/forge-std.md) + - [Understanding Traces](./forge/traces.md) + - [Fork Testing](./forge/fork-testing.md) + +- [Advanced Testing](./forge/advanced-testing.md) + - [Fuzz Testing](./forge/fuzz-testing.md) + - [Invariant Testing](./forge/invariant-testing.md) + - [Differential Testing](./forge/differential-ffi-testing.md) + + + + + +- [Deploying and Verifying](./forge/deploying.md) +- [Gas Tracking](./forge/gas-tracking.md) + - [Gas Reports](./forge/gas-reports.md) + - [Gas Snapshots](./forge/gas-snapshots.md) +- [Debugger](./forge/debugger.md) + +# Cast Overview + +- [Overview of Cast](./cast/README.md) + +# Anvil Overview + +- [Overview of Anvil](./anvil/README.md) + +# Chisel Overview + +- [Overview of Chisel](./chisel/README.md) + +# Configuration + +- [Configuring with `foundry.toml`](./config/README.md) +- [Continuous Integration](./config/continous-integration.md) +- [Integrating with VSCode](./config/vscode.md) +- [Shell Autocompletion](./config/shell-autocompletion.md) +- [Static Analyzers](./config/static-analyzers.md) +- [Integrating with Hardhat](./config/hardhat.md) + +# Tutorials + +- [Best Practices](./tutorials/best-practices.md) +- [Creating an NFT with Solmate](./tutorials/solmate-nft.md) +- [Docker and Foundry](./tutorials/foundry-docker.md) +- [Testing EIP-712 Signatures](./tutorials/testing-eip712.md) +- [Solidity Scripting](./tutorials/solidity-scripting.md) +- [Forking Mainnet with Cast and Anvil](./tutorials/forking-mainnet-with-cast-anvil.md) +- [Learning Foundry Videos](./tutorials/learn-foundry.md) + + +# Appendix + +- [FAQ](./faq.md) +- [Help us improve Foundry](./contributing.md) - [Miscellaneous](./misc/README.md) - [Struct encoding](./misc/struct-encoding.md) - [Precompile Registry](./misc/precompile-registry.md) From 9a9f94c9973e768ac7ed714272adfa2a1a398c20 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:05:34 -0400 Subject: [PATCH 03/17] chore: unflatten references --- src/SUMMARY.md | 551 +++++++++++++++++++++++++------------------------ 1 file changed, 277 insertions(+), 274 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 421d7c0bb..edaabd9a0 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -16,292 +16,295 @@ # References -- [References](./reference/README.md) - - [`forge` Commands](./reference/forge/README.md) - - [General Commands](./reference/forge/general-commands.md) - - [forge](./reference/forge/forge.md) - - [forge help](./reference/forge/forge-help.md) - - [forge completions](./reference/forge/forge-completions.md) - - [Project Commands](./reference/forge/project-commands.md) - - [forge init](./reference/forge/forge-init.md) - - [forge install](./reference/forge/forge-install.md) - - [forge update](./reference/forge/forge-update.md) - - [forge remove](./reference/forge/forge-remove.md) - - [forge config](./reference/forge/forge-config.md) - - [forge remappings](./reference/forge/forge-remappings.md) - - [forge tree](./reference/forge/forge-tree.md) - - [forge geiger](./reference/forge/forge-geiger.md) - - [Build Commands](./reference/forge/build-commands.md) - - [forge build](./reference/forge/forge-build.md) - - [forge clean](./reference/forge/forge-clean.md) - - [forge inspect](./reference/forge/forge-inspect.md) - - [Test Commands](./reference/forge/test-commands.md) - - [forge test](./reference/forge/forge-test.md) - - [forge snapshot](./reference/forge/forge-snapshot.md) - - [forge coverage](./reference/forge/forge-coverage.md) - - [Deploy Commands](./reference/forge/deploy-commands.md) - - [forge create](./reference/forge/forge-create.md) - - [forge verify-contract](./reference/forge/forge-verify-contract.md) - - [forge verify-check](./reference/forge/forge-verify-check.md) - - [forge flatten](./reference/forge/forge-flatten.md) - - [Utility Commands](./reference/forge/utility-commands.md) - - [forge debug](./reference/forge/forge-debug.md) - - [forge bind](./reference/forge/forge-bind.md) - - [forge cache](./reference/forge/forge-cache.md) - - [forge cache clean](./reference/forge/forge-cache-clean.md) - - [forge cache ls](./reference/forge/forge-cache-ls.md) - - [forge script](./reference/forge/forge-script.md) - - [forge upload-selectors](./reference/forge/forge-upload-selectors.md) - - [forge doc](./reference/forge/forge-doc.md) - - [`cast` Commands](./reference/cast/README.md) - - [General Commands](./reference/cast/general-commands.md) - - [cast](./reference/cast/cast.md) - - [cast help](./reference/cast/cast-help.md) - - [cast completions](./reference/cast/cast-completions.md) - - [Chain Commands](./reference/cast/chain-commands.md) - - [cast chain-id](./reference/cast/cast-chain-id.md) - - [cast chain](./reference/cast/cast-chain.md) - - [cast client](./reference/cast/cast-client.md) - - [Transaction Commands](./reference/cast/transaction-commands.md) - - [cast publish](./reference/cast/cast-publish.md) - - [cast receipt](./reference/cast/cast-receipt.md) - - [cast send](./reference/cast/cast-send.md) - - [cast call](./reference/cast/cast-call.md) - - [cast rpc](./reference/cast/cast-rpc.md) - - [cast tx](./reference/cast/cast-tx.md) - - [cast run](./reference/cast/cast-run.md) - - [cast estimate](./reference/cast/cast-estimate.md) - - [cast access-list](./reference/cast/cast-access-list.md) - - [cast logs](./reference/cast/cast-logs.md) - - [Block Commands](./reference/cast/block-commands.md) - - [cast find-block](./reference/cast/cast-find-block.md) - - [cast gas-price](./reference/cast/cast-gas-price.md) - - [cast block-number](./reference/cast/cast-block-number.md) - - [cast basefee](./reference/cast/cast-basefee.md) - - [cast block](./reference/cast/cast-block.md) - - [cast age](./reference/cast/cast-age.md) - - [Account Commands](./reference/cast/account-commands.md) - - [cast balance](./reference/cast/cast-balance.md) - - [cast storage](./reference/cast/cast-storage.md) - - [cast proof](./reference/cast/cast-proof.md) - - [cast nonce](./reference/cast/cast-nonce.md) - - [cast code](./reference/cast/cast-code.md) - - [cast codesize](./reference/cast/cast-codesize.md) - - [ENS Commands](./reference/cast/ens-commands.md) - - [cast lookup-address](./reference/cast/cast-lookup-address.md) - - [cast resolve-name](./reference/cast/cast-resolve-name.md) - - [cast namehash](./reference/cast/cast-namehash.md) - - [Etherscan Commands](./reference/cast/etherscan-commands.md) - - [cast etherscan-source](./reference/cast/cast-etherscan-source.md) - - [ABI Commands](./reference/cast/abi-commands.md) - - [cast abi-encode](./reference/cast/cast-abi-encode.md) - - [cast 4byte](./reference/cast/cast-4byte.md) - - [cast 4byte-decode](./reference/cast/cast-4byte-decode.md) - - [cast 4byte-event](./reference/cast/cast-4byte-event.md) - - [cast calldata](./reference/cast/cast-calldata.md) - - [cast pretty-calldata](./reference/cast/cast-pretty-calldata.md) - - [cast --abi-decode](./reference/cast/cast--abi-decode.md) - - [cast --calldata-decode](./reference/cast/cast--calldata-decode.md) - - [cast upload-signature](./reference/cast/cast-upload-signature.md) - - [Conversion Commands](./reference/cast/conversion-commands.md) - - [cast --format-bytes32-string](./reference/cast/cast--format-bytes32-string.md) - - [cast --from-bin](./reference/cast/cast--from-bin.md) - - [cast --from-fix](./reference/cast/cast--from-fix.md) - - [cast --from-rlp](./reference/cast/cast--from-rlp.md) - - [cast --from-utf8](./reference/cast/cast--from-utf8.md) - - [cast --parse-bytes32-string](./reference/cast/cast--parse-bytes32-string.md) - - [cast --to-ascii](./reference/cast/cast--to-ascii.md) - - [cast --to-base](./reference/cast/cast--to-base.md) - - [cast --to-bytes32](./reference/cast/cast--to-bytes32.md) - - [cast --to-fix](./reference/cast/cast--to-fix.md) - - [cast --to-hexdata](./reference/cast/cast--to-hexdata.md) - - [cast --to-int256](./reference/cast/cast--to-int256.md) - - [cast --to-rlp](./reference/cast/cast--to-rlp.md) - - [cast --to-uint256](./reference/cast/cast--to-uint256.md) - - [cast --to-unit](./reference/cast/cast--to-unit.md) - - [cast --to-wei](./reference/cast/cast--to-wei.md) - - [cast shl](./reference/cast/cast-shl.md) - - [cast shr](./reference/cast/cast-shr.md) - - [Utility Commands](./reference/cast/utility-commands.md) - - [cast sig](./reference/cast/cast-sig.md) - - [cast sig-event](./reference/cast/cast-sig-event.md) - - [cast keccak](./reference/cast/cast-keccak.md) - - [cast compute-address](./reference/cast/cast-compute-address.md) - - [cast create2](./reference/cast/cast-create2.md) - - [cast interface](./reference/cast/cast-interface.md) - - [cast index](./reference/cast/cast-index.md) - - [cast --concat-hex](./reference/cast/cast--concat-hex.md) - - [cast --max-int](./reference/cast/cast--max-int.md) - - [cast --min-int](./reference/cast/cast--min-int.md) - - [cast --max-uint](./reference/cast/cast--max-uint.md) - - [cast --to-checksum-address](./reference/cast/cast--to-checksum-address.md) - - [Wallet Commands](./reference/cast/wallet-commands.md) - - [cast wallet](./reference/cast/cast-wallet.md) - - [cast wallet new](./reference/cast/cast-wallet-new.md) - - [cast wallet address](./reference/cast/cast-wallet-address.md) - - [cast wallet sign](./reference/cast/cast-wallet-sign.md) - - [cast wallet vanity](./reference/cast/cast-wallet-vanity.md) - - [cast wallet verify](./reference/cast/cast-wallet-verify.md) - - [`anvil` Reference](./reference/anvil/README.md) - - [`chisel` Reference](./reference/chisel/README.md) - - [Config Reference](./reference/config/README.md) - - [Overview](./reference/config/overview.md) - - [Project](./reference/config/project.md) - - [Solidity Compiler](./reference/config/solidity-compiler.md) - - [Testing](./reference/config/testing.md) - - [In-line Configuration Testing](./reference/config/inline-test-config.md) - - [Formatter](./reference/config/formatter.md) - - [Documentation Generator](./reference/config/doc-generator.md) - - [Etherscan](./reference/config/etherscan.md) - - [Cheatcodes Reference](./cheatcodes/README.md) - - [Environment](./cheatcodes/environment.md) - - [`warp`](./cheatcodes/warp.md) - - [`roll`](./cheatcodes/roll.md) - - [`fee`](./cheatcodes/fee.md) - - [`difficulty`](./cheatcodes/difficulty.md) - - [`prevrandao`](./cheatcodes/prevrandao.md) - - [`chainId`](./cheatcodes/chain-id.md) - - [`store`](./cheatcodes/store.md) - - [`load`](./cheatcodes/load.md) - - [`etch`](./cheatcodes/etch.md) - - [`deal`](./cheatcodes/deal.md) - - [`prank`](./cheatcodes/prank.md) - - [`startPrank`](./cheatcodes/start-prank.md) - - [`stopPrank`](./cheatcodes/stop-prank.md) - - [`readCallers`](./cheatcodes/read-callers.md) - - [`record`](./cheatcodes/record.md) - - [`accesses`](./cheatcodes/accesses.md) - - [`recordLogs`](./cheatcodes/record-logs.md) - - [`getRecordedLogs`](./cheatcodes/get-recorded-logs.md) - - [`setNonce`](./cheatcodes/set-nonce.md) - - [`getNonce`](./cheatcodes/get-nonce.md) - - [`mockCall`](./cheatcodes/mock-call.md) - - [`mockCallRevert`](./cheatcodes/mock-call-revert.md) - - [`clearMockedCalls`](./cheatcodes/clear-mocked-calls.md) - - [`coinbase`](./cheatcodes/coinbase.md) - - [`broadcast`](./cheatcodes/broadcast.md) - - [`startBroadcast`](./cheatcodes/start-broadcast.md) - - [`stopBroadcast`](./cheatcodes/stop-broadcast.md) - - [`pauseGasMetering`](./cheatcodes/pause-gas-metering.md) - - [`resumeGasMetering`](./cheatcodes/resume-gas-metering.md) - - [`txGasPrice`](./cheatcodes/tx-gas-price.md) - - [Assertions](./cheatcodes/assertions.md) - - [`expectRevert`](./cheatcodes/expect-revert.md) - - [`expectEmit`](./cheatcodes/expect-emit.md) - - [`expectCall`](./cheatcodes/expect-call.md) - - [Fuzzer](./cheatcodes/fuzzer.md) - - [`assume`](./cheatcodes/assume.md) - - [Forking](./cheatcodes/forking.md) - - [`createFork`](./cheatcodes/create-fork.md) - - [`selectFork`](./cheatcodes/select-fork.md) - - [`createSelectFork`](./cheatcodes/create-select-fork.md) - - [`activeFork`](./cheatcodes/active-fork.md) - - [`rollFork`](./cheatcodes/roll-fork.md) - - [`makePersistent`](./cheatcodes/make-persistent.md) - - [`revokePersistent`](./cheatcodes/revoke-persistent.md) - - [`isPersistent`](./cheatcodes/is-persistent.md) - - [`allowCheatcodes`](./cheatcodes/allow-cheatcodes.md) - - [`transact`](./cheatcodes/transact.md) - - [External](./cheatcodes/external.md) - - [`ffi`](./cheatcodes/ffi.md) - - [`projectRoot`](./cheatcodes/project-root.md) - - [`getCode`](./cheatcodes/get-code.md) - - [`getDeployedCode`](./cheatcodes/get-deployed-code.md) - - [`setEnv`](./cheatcodes/set-env.md) - - [`envOr`](./cheatcodes/env-or.md) - - [`envBool`](./cheatcodes/env-bool.md) - - [`envUint`](./cheatcodes/env-uint.md) - - [`envInt`](./cheatcodes/env-int.md) - - [`envAddress`](./cheatcodes/env-address.md) - - [`envBytes32`](./cheatcodes/env-bytes32.md) - - [`envString`](./cheatcodes/env-string.md) - - [`envBytes`](./cheatcodes/env-bytes.md) - - [`parseJson`](./cheatcodes/parse-json.md) - - [`serializeJson`](./cheatcodes/serialize-json.md) - - [`writeJson`](./cheatcodes/write-json.md) - - [Utilities](./cheatcodes/utilities.md) - - [`addr`](./cheatcodes/addr.md) - - [`sign`](./cheatcodes/sign.md) - - [`skip`](./cheatcodes/skip.md) - - [`label`](./cheatcodes/label.md) - - [`deriveKey`](./cheatcodes/derive-key.md) - - [`parseBytes`](./cheatcodes/parse-bytes.md) - - [`parseAddress`](./cheatcodes/parse-address.md) - - [`parseUint`](./cheatcodes/parse-uint.md) - - [`parseInt`](./cheatcodes/parse-int.md) - - [`parseBytes32`](./cheatcodes/parse-bytes32.md) - - [`parseBool`](./cheatcodes/parse-bool.md) - - [`rememberKey`](./cheatcodes/remember-key.md) - - [`toString`](./cheatcodes/to-string.md) - - [`breakpoint`](./cheatcodes/breakpoint.md) - - [Snapshots](./cheatcodes/snapshots.md) - - [RPC](./cheatcodes/rpc.md) - - [Files](./cheatcodes/fs.md) - - [Forge Standard Library Reference](./reference/forge-std/README.md) - - [Std Logs](./reference/forge-std/std-logs.md) - - [Std Assertions](./reference/forge-std/std-assertions.md) - - [`fail`](./reference/forge-std/fail.md) - - [`assertFalse`](./reference/forge-std/assertFalse.md) - - [`assertEq`](./reference/forge-std/assertEq.md) - - [`assertApproxEqAbs`](./reference/forge-std/assertApproxEqAbs.md) - - [`assertApproxEqRel`](./reference/forge-std/assertApproxEqRel.md) - - [Std Cheats](./reference/forge-std/std-cheats.md) - - [`skip`](./reference/forge-std/skip.md) - - [`rewind`](./reference/forge-std/rewind.md) - - [`hoax`](./reference/forge-std/hoax.md) - - [`startHoax`](./reference/forge-std/startHoax.md) - - [`deal`](./reference/forge-std/deal.md) - - [`deployCode`](./reference/forge-std/deployCode.md) - - [`deployCodeTo`](./reference/forge-std/deployCodeTo.md) - - [`bound`](./reference/forge-std/bound.md) - - [`changePrank`](./reference/forge-std/change-prank.md) - - [`makeAddr`](./reference/forge-std/make-addr.md) - - [`makeAddrAndKey`](./reference/forge-std/make-addr-and-key.md) - - [`noGasMetering`](./reference/forge-std/noGasMetering.md) - - [`assumeNoPrecompiles`](./reference/forge-std/assume-no-precompiles.md) - - [`assumePayable`](./reference/forge-std/assume-payable.md) - - [Std Errors](./reference/forge-std/std-errors.md) - - [`assertionError`](./reference/forge-std/assertionError.md) - - [`arithmeticError`](./reference/forge-std/arithmeticError.md) - - [`divisionError`](./reference/forge-std/divisionError.md) - - [`enumConversionError`](./reference/forge-std/enumConversionError.md) - - [`encodeStorageError`](./reference/forge-std/encodeStorageError.md) - - [`popError`](./reference/forge-std/popError.md) - - [`indexOOBError`](./reference/forge-std/indexOOBError.md) - - [`memOverflowError`](./reference/forge-std/memOverflowError.md) - - [`zeroVarError`](./reference/forge-std/zeroVarError.md) - - [Std Storage](./reference/forge-std/std-storage.md) - - [`target`](./reference/forge-std/target.md) - - [`sig`](./reference/forge-std/sig.md) - - [`with_key`](./reference/forge-std/with_key.md) - - [`depth`](./reference/forge-std/depth.md) - - [`checked_write`](./reference/forge-std/checked_write.md) - - [`find`](./reference/forge-std/find.md) - - [`read`](./reference/forge-std/read.md) - - [Std Math](./reference/forge-std/std-math.md) - - [`abs`](./reference/forge-std/abs.md) - - [`delta`](./reference/forge-std/delta.md) - - [`percentDelta`](./reference/forge-std/percentDelta.md) - - [Script Utils](./reference/forge-std/script-utils.md) - - [`computeCreateAddress`](./reference/forge-std/compute-create-address.md) - - [`deriveRememberKey`](./reference/forge-std/derive-remember-key.md) - - [Console Logging](./reference/forge-std/console-log.md) - - [DSTest Reference](./reference/ds-test.md) +- [`forge` Commands](./reference/forge/README.md) + - [General Commands](./reference/forge/general-commands.md) + - [forge](./reference/forge/forge.md) + - [forge help](./reference/forge/forge-help.md) + - [forge completions](./reference/forge/forge-completions.md) + - [Project Commands](./reference/forge/project-commands.md) + - [forge init](./reference/forge/forge-init.md) + - [forge install](./reference/forge/forge-install.md) + - [forge update](./reference/forge/forge-update.md) + - [forge remove](./reference/forge/forge-remove.md) + - [forge config](./reference/forge/forge-config.md) + - [forge remappings](./reference/forge/forge-remappings.md) + - [forge tree](./reference/forge/forge-tree.md) + - [forge geiger](./reference/forge/forge-geiger.md) + - [Build Commands](./reference/forge/build-commands.md) + - [forge build](./reference/forge/forge-build.md) + - [forge clean](./reference/forge/forge-clean.md) + - [forge inspect](./reference/forge/forge-inspect.md) + - [Test Commands](./reference/forge/test-commands.md) + - [forge test](./reference/forge/forge-test.md) + - [forge snapshot](./reference/forge/forge-snapshot.md) + - [forge coverage](./reference/forge/forge-coverage.md) + - [Deploy Commands](./reference/forge/deploy-commands.md) + - [forge create](./reference/forge/forge-create.md) + - [forge verify-contract](./reference/forge/forge-verify-contract.md) + - [forge verify-check](./reference/forge/forge-verify-check.md) + - [forge flatten](./reference/forge/forge-flatten.md) + - [Utility Commands](./reference/forge/utility-commands.md) + - [forge debug](./reference/forge/forge-debug.md) + - [forge bind](./reference/forge/forge-bind.md) + - [forge cache](./reference/forge/forge-cache.md) + - [forge cache clean](./reference/forge/forge-cache-clean.md) + - [forge cache ls](./reference/forge/forge-cache-ls.md) + - [forge script](./reference/forge/forge-script.md) + - [forge upload-selectors](./reference/forge/forge-upload-selectors.md) + - [forge doc](./reference/forge/forge-doc.md) +- [`cast` Commands](./reference/cast/README.md) + - [General Commands](./reference/cast/general-commands.md) + - [cast](./reference/cast/cast.md) + - [cast help](./reference/cast/cast-help.md) + - [cast completions](./reference/cast/cast-completions.md) + - [Chain Commands](./reference/cast/chain-commands.md) + - [cast chain-id](./reference/cast/cast-chain-id.md) + - [cast chain](./reference/cast/cast-chain.md) + - [cast client](./reference/cast/cast-client.md) + - [Transaction Commands](./reference/cast/transaction-commands.md) + - [cast publish](./reference/cast/cast-publish.md) + - [cast receipt](./reference/cast/cast-receipt.md) + - [cast send](./reference/cast/cast-send.md) + - [cast call](./reference/cast/cast-call.md) + - [cast rpc](./reference/cast/cast-rpc.md) + - [cast tx](./reference/cast/cast-tx.md) + - [cast run](./reference/cast/cast-run.md) + - [cast estimate](./reference/cast/cast-estimate.md) + - [cast access-list](./reference/cast/cast-access-list.md) + - [cast logs](./reference/cast/cast-logs.md) + - [Block Commands](./reference/cast/block-commands.md) + - [cast find-block](./reference/cast/cast-find-block.md) + - [cast gas-price](./reference/cast/cast-gas-price.md) + - [cast block-number](./reference/cast/cast-block-number.md) + - [cast basefee](./reference/cast/cast-basefee.md) + - [cast block](./reference/cast/cast-block.md) + - [cast age](./reference/cast/cast-age.md) + - [Account Commands](./reference/cast/account-commands.md) + - [cast balance](./reference/cast/cast-balance.md) + - [cast storage](./reference/cast/cast-storage.md) + - [cast proof](./reference/cast/cast-proof.md) + - [cast nonce](./reference/cast/cast-nonce.md) + - [cast code](./reference/cast/cast-code.md) + - [cast codesize](./reference/cast/cast-codesize.md) + - [ENS Commands](./reference/cast/ens-commands.md) + - [cast lookup-address](./reference/cast/cast-lookup-address.md) + - [cast resolve-name](./reference/cast/cast-resolve-name.md) + - [cast namehash](./reference/cast/cast-namehash.md) + - [Etherscan Commands](./reference/cast/etherscan-commands.md) + - [cast etherscan-source](./reference/cast/cast-etherscan-source.md) + - [ABI Commands](./reference/cast/abi-commands.md) + - [cast abi-encode](./reference/cast/cast-abi-encode.md) + - [cast 4byte](./reference/cast/cast-4byte.md) + - [cast 4byte-decode](./reference/cast/cast-4byte-decode.md) + - [cast 4byte-event](./reference/cast/cast-4byte-event.md) + - [cast calldata](./reference/cast/cast-calldata.md) + - [cast pretty-calldata](./reference/cast/cast-pretty-calldata.md) + - [cast --abi-decode](./reference/cast/cast--abi-decode.md) + - [cast --calldata-decode](./reference/cast/cast--calldata-decode.md) + - [cast upload-signature](./reference/cast/cast-upload-signature.md) + - [Conversion Commands](./reference/cast/conversion-commands.md) + - [cast --format-bytes32-string](./reference/cast/cast--format-bytes32-string.md) + - [cast --from-bin](./reference/cast/cast--from-bin.md) + - [cast --from-fix](./reference/cast/cast--from-fix.md) + - [cast --from-rlp](./reference/cast/cast--from-rlp.md) + - [cast --from-utf8](./reference/cast/cast--from-utf8.md) + - [cast --parse-bytes32-string](./reference/cast/cast--parse-bytes32-string.md) + - [cast --to-ascii](./reference/cast/cast--to-ascii.md) + - [cast --to-base](./reference/cast/cast--to-base.md) + - [cast --to-bytes32](./reference/cast/cast--to-bytes32.md) + - [cast --to-fix](./reference/cast/cast--to-fix.md) + - [cast --to-hexdata](./reference/cast/cast--to-hexdata.md) + - [cast --to-int256](./reference/cast/cast--to-int256.md) + - [cast --to-rlp](./reference/cast/cast--to-rlp.md) + - [cast --to-uint256](./reference/cast/cast--to-uint256.md) + - [cast --to-unit](./reference/cast/cast--to-unit.md) + - [cast --to-wei](./reference/cast/cast--to-wei.md) + - [cast shl](./reference/cast/cast-shl.md) + - [cast shr](./reference/cast/cast-shr.md) + - [Utility Commands](./reference/cast/utility-commands.md) + - [cast sig](./reference/cast/cast-sig.md) + - [cast sig-event](./reference/cast/cast-sig-event.md) + - [cast keccak](./reference/cast/cast-keccak.md) + - [cast compute-address](./reference/cast/cast-compute-address.md) + - [cast create2](./reference/cast/cast-create2.md) + - [cast interface](./reference/cast/cast-interface.md) + - [cast index](./reference/cast/cast-index.md) + - [cast --concat-hex](./reference/cast/cast--concat-hex.md) + - [cast --max-int](./reference/cast/cast--max-int.md) + - [cast --min-int](./reference/cast/cast--min-int.md) + - [cast --max-uint](./reference/cast/cast--max-uint.md) + - [cast --to-checksum-address](./reference/cast/cast--to-checksum-address.md) + - [Wallet Commands](./reference/cast/wallet-commands.md) + - [cast wallet](./reference/cast/cast-wallet.md) + - [cast wallet new](./reference/cast/cast-wallet-new.md) + - [cast wallet address](./reference/cast/cast-wallet-address.md) + - [cast wallet sign](./reference/cast/cast-wallet-sign.md) + - [cast wallet vanity](./reference/cast/cast-wallet-vanity.md) + - [cast wallet verify](./reference/cast/cast-wallet-verify.md) +- [`anvil` Reference](./reference/anvil/README.md) +- [`chisel` Reference](./reference/chisel/README.md) +- [Config Reference](./reference/config/README.md) + - [Overview](./reference/config/overview.md) + - [Project](./reference/config/project.md) + - [Solidity Compiler](./reference/config/solidity-compiler.md) + - [Testing](./reference/config/testing.md) + - [In-line Configuration Testing](./reference/config/inline-test-config.md) + - [Formatter](./reference/config/formatter.md) + - [Documentation Generator](./reference/config/doc-generator.md) + - [Etherscan](./reference/config/etherscan.md) +- [Cheatcodes Reference](./cheatcodes/README.md) + - [Environment](./cheatcodes/environment.md) + - [`warp`](./cheatcodes/warp.md) + - [`roll`](./cheatcodes/roll.md) + - [`fee`](./cheatcodes/fee.md) + - [`difficulty`](./cheatcodes/difficulty.md) + - [`prevrandao`](./cheatcodes/prevrandao.md) + - [`chainId`](./cheatcodes/chain-id.md) + - [`store`](./cheatcodes/store.md) + - [`load`](./cheatcodes/load.md) + - [`etch`](./cheatcodes/etch.md) + - [`deal`](./cheatcodes/deal.md) + - [`prank`](./cheatcodes/prank.md) + - [`startPrank`](./cheatcodes/start-prank.md) + - [`stopPrank`](./cheatcodes/stop-prank.md) + - [`readCallers`](./cheatcodes/read-callers.md) + - [`record`](./cheatcodes/record.md) + - [`accesses`](./cheatcodes/accesses.md) + - [`recordLogs`](./cheatcodes/record-logs.md) + - [`getRecordedLogs`](./cheatcodes/get-recorded-logs.md) + - [`setNonce`](./cheatcodes/set-nonce.md) + - [`getNonce`](./cheatcodes/get-nonce.md) + - [`mockCall`](./cheatcodes/mock-call.md) + - [`mockCallRevert`](./cheatcodes/mock-call-revert.md) + - [`clearMockedCalls`](./cheatcodes/clear-mocked-calls.md) + - [`coinbase`](./cheatcodes/coinbase.md) + - [`broadcast`](./cheatcodes/broadcast.md) + - [`startBroadcast`](./cheatcodes/start-broadcast.md) + - [`stopBroadcast`](./cheatcodes/stop-broadcast.md) + - [`pauseGasMetering`](./cheatcodes/pause-gas-metering.md) + - [`resumeGasMetering`](./cheatcodes/resume-gas-metering.md) + - [`txGasPrice`](./cheatcodes/tx-gas-price.md) + - [Assertions](./cheatcodes/assertions.md) + - [`expectRevert`](./cheatcodes/expect-revert.md) + - [`expectEmit`](./cheatcodes/expect-emit.md) + - [`expectCall`](./cheatcodes/expect-call.md) + - [Fuzzer](./cheatcodes/fuzzer.md) + - [`assume`](./cheatcodes/assume.md) + - [Forking](./cheatcodes/forking.md) + - [`createFork`](./cheatcodes/create-fork.md) + - [`selectFork`](./cheatcodes/select-fork.md) + - [`createSelectFork`](./cheatcodes/create-select-fork.md) + - [`activeFork`](./cheatcodes/active-fork.md) + - [`rollFork`](./cheatcodes/roll-fork.md) + - [`makePersistent`](./cheatcodes/make-persistent.md) + - [`revokePersistent`](./cheatcodes/revoke-persistent.md) + - [`isPersistent`](./cheatcodes/is-persistent.md) + - [`allowCheatcodes`](./cheatcodes/allow-cheatcodes.md) + - [`transact`](./cheatcodes/transact.md) + - [External](./cheatcodes/external.md) + - [`ffi`](./cheatcodes/ffi.md) + - [`projectRoot`](./cheatcodes/project-root.md) + - [`getCode`](./cheatcodes/get-code.md) + - [`getDeployedCode`](./cheatcodes/get-deployed-code.md) + - [`setEnv`](./cheatcodes/set-env.md) + - [`envOr`](./cheatcodes/env-or.md) + - [`envBool`](./cheatcodes/env-bool.md) + - [`envUint`](./cheatcodes/env-uint.md) + - [`envInt`](./cheatcodes/env-int.md) + - [`envAddress`](./cheatcodes/env-address.md) + - [`envBytes32`](./cheatcodes/env-bytes32.md) + - [`envString`](./cheatcodes/env-string.md) + - [`envBytes`](./cheatcodes/env-bytes.md) + - [`parseJson`](./cheatcodes/parse-json.md) + - [`serializeJson`](./cheatcodes/serialize-json.md) + - [`writeJson`](./cheatcodes/write-json.md) + - [Utilities](./cheatcodes/utilities.md) + - [`addr`](./cheatcodes/addr.md) + - [`sign`](./cheatcodes/sign.md) + - [`skip`](./cheatcodes/skip.md) + - [`label`](./cheatcodes/label.md) + - [`deriveKey`](./cheatcodes/derive-key.md) + - [`parseBytes`](./cheatcodes/parse-bytes.md) + - [`parseAddress`](./cheatcodes/parse-address.md) + - [`parseUint`](./cheatcodes/parse-uint.md) + - [`parseInt`](./cheatcodes/parse-int.md) + - [`parseBytes32`](./cheatcodes/parse-bytes32.md) + - [`parseBool`](./cheatcodes/parse-bool.md) + - [`rememberKey`](./cheatcodes/remember-key.md) + - [`toString`](./cheatcodes/to-string.md) + - [`breakpoint`](./cheatcodes/breakpoint.md) + - [Snapshots](./cheatcodes/snapshots.md) + - [RPC](./cheatcodes/rpc.md) + - [Files](./cheatcodes/fs.md) +- [Forge Standard Library Reference](./reference/forge-std/README.md) + - [Std Logs](./reference/forge-std/std-logs.md) + - [Std Assertions](./reference/forge-std/std-assertions.md) + - [`fail`](./reference/forge-std/fail.md) + - [`assertFalse`](./reference/forge-std/assertFalse.md) + - [`assertEq`](./reference/forge-std/assertEq.md) + - [`assertApproxEqAbs`](./reference/forge-std/assertApproxEqAbs.md) + - [`assertApproxEqRel`](./reference/forge-std/assertApproxEqRel.md) + - [Std Cheats](./reference/forge-std/std-cheats.md) + - [`skip`](./reference/forge-std/skip.md) + - [`rewind`](./reference/forge-std/rewind.md) + - [`hoax`](./reference/forge-std/hoax.md) + - [`startHoax`](./reference/forge-std/startHoax.md) + - [`deal`](./reference/forge-std/deal.md) + - [`deployCode`](./reference/forge-std/deployCode.md) + - [`deployCodeTo`](./reference/forge-std/deployCodeTo.md) + - [`bound`](./reference/forge-std/bound.md) + - [`changePrank`](./reference/forge-std/change-prank.md) + - [`makeAddr`](./reference/forge-std/make-addr.md) + - [`makeAddrAndKey`](./reference/forge-std/make-addr-and-key.md) + - [`noGasMetering`](./reference/forge-std/noGasMetering.md) + - [`assumeNoPrecompiles`](./reference/forge-std/assume-no-precompiles.md) + - [`assumePayable`](./reference/forge-std/assume-payable.md) + - [Std Errors](./reference/forge-std/std-errors.md) + - [`assertionError`](./reference/forge-std/assertionError.md) + - [`arithmeticError`](./reference/forge-std/arithmeticError.md) + - [`divisionError`](./reference/forge-std/divisionError.md) + - [`enumConversionError`](./reference/forge-std/enumConversionError.md) + - [`encodeStorageError`](./reference/forge-std/encodeStorageError.md) + - [`popError`](./reference/forge-std/popError.md) + - [`indexOOBError`](./reference/forge-std/indexOOBError.md) + - [`memOverflowError`](./reference/forge-std/memOverflowError.md) + - [`zeroVarError`](./reference/forge-std/zeroVarError.md) + - [Std Storage](./reference/forge-std/std-storage.md) + - [`target`](./reference/forge-std/target.md) + - [`sig`](./reference/forge-std/sig.md) + - [`with_key`](./reference/forge-std/with_key.md) + - [`depth`](./reference/forge-std/depth.md) + - [`checked_write`](./reference/forge-std/checked_write.md) + - [`find`](./reference/forge-std/find.md) + - [`read`](./reference/forge-std/read.md) + - [Std Math](./reference/forge-std/std-math.md) + - [`abs`](./reference/forge-std/abs.md) + - [`delta`](./reference/forge-std/delta.md) + - [`percentDelta`](./reference/forge-std/percentDelta.md) + - [Script Utils](./reference/forge-std/script-utils.md) + - [`computeCreateAddress`](./reference/forge-std/compute-create-address.md) + - [`deriveRememberKey`](./reference/forge-std/derive-remember-key.md) + - [Console Logging](./reference/forge-std/console-log.md) +- [DSTest Reference](./reference/ds-test.md) -# Forge Overview +# Testing -- [Overview of Forge](forge/README.md) - [Tests](./forge/tests.md) - [Writing Tests](./forge/writing-tests.md) - [Cheatcodes](./forge/cheatcodes.md) - [Forge Standard Library Overview](./forge/forge-std.md) - [Understanding Traces](./forge/traces.md) - [Fork Testing](./forge/fork-testing.md) - - [Advanced Testing](./forge/advanced-testing.md) - [Fuzz Testing](./forge/fuzz-testing.md) - [Invariant Testing](./forge/invariant-testing.md) - [Differential Testing](./forge/differential-ffi-testing.md) + +# Forge Overview + +- [Overview of Forge](forge/README.md) + + From 2eb076b04b625a63bef6851219ce098320007cfc Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:10:16 -0400 Subject: [PATCH 04/17] chore: re-flatten reference --- src/SUMMARY.md | 541 +++++++++++++++++++++++++------------------------ 1 file changed, 271 insertions(+), 270 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index edaabd9a0..20da394f9 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -16,276 +16,277 @@ # References -- [`forge` Commands](./reference/forge/README.md) - - [General Commands](./reference/forge/general-commands.md) - - [forge](./reference/forge/forge.md) - - [forge help](./reference/forge/forge-help.md) - - [forge completions](./reference/forge/forge-completions.md) - - [Project Commands](./reference/forge/project-commands.md) - - [forge init](./reference/forge/forge-init.md) - - [forge install](./reference/forge/forge-install.md) - - [forge update](./reference/forge/forge-update.md) - - [forge remove](./reference/forge/forge-remove.md) - - [forge config](./reference/forge/forge-config.md) - - [forge remappings](./reference/forge/forge-remappings.md) - - [forge tree](./reference/forge/forge-tree.md) - - [forge geiger](./reference/forge/forge-geiger.md) - - [Build Commands](./reference/forge/build-commands.md) - - [forge build](./reference/forge/forge-build.md) - - [forge clean](./reference/forge/forge-clean.md) - - [forge inspect](./reference/forge/forge-inspect.md) - - [Test Commands](./reference/forge/test-commands.md) - - [forge test](./reference/forge/forge-test.md) - - [forge snapshot](./reference/forge/forge-snapshot.md) - - [forge coverage](./reference/forge/forge-coverage.md) - - [Deploy Commands](./reference/forge/deploy-commands.md) - - [forge create](./reference/forge/forge-create.md) - - [forge verify-contract](./reference/forge/forge-verify-contract.md) - - [forge verify-check](./reference/forge/forge-verify-check.md) - - [forge flatten](./reference/forge/forge-flatten.md) - - [Utility Commands](./reference/forge/utility-commands.md) - - [forge debug](./reference/forge/forge-debug.md) - - [forge bind](./reference/forge/forge-bind.md) - - [forge cache](./reference/forge/forge-cache.md) - - [forge cache clean](./reference/forge/forge-cache-clean.md) - - [forge cache ls](./reference/forge/forge-cache-ls.md) - - [forge script](./reference/forge/forge-script.md) - - [forge upload-selectors](./reference/forge/forge-upload-selectors.md) - - [forge doc](./reference/forge/forge-doc.md) -- [`cast` Commands](./reference/cast/README.md) - - [General Commands](./reference/cast/general-commands.md) - - [cast](./reference/cast/cast.md) - - [cast help](./reference/cast/cast-help.md) - - [cast completions](./reference/cast/cast-completions.md) - - [Chain Commands](./reference/cast/chain-commands.md) - - [cast chain-id](./reference/cast/cast-chain-id.md) - - [cast chain](./reference/cast/cast-chain.md) - - [cast client](./reference/cast/cast-client.md) - - [Transaction Commands](./reference/cast/transaction-commands.md) - - [cast publish](./reference/cast/cast-publish.md) - - [cast receipt](./reference/cast/cast-receipt.md) - - [cast send](./reference/cast/cast-send.md) - - [cast call](./reference/cast/cast-call.md) - - [cast rpc](./reference/cast/cast-rpc.md) - - [cast tx](./reference/cast/cast-tx.md) - - [cast run](./reference/cast/cast-run.md) - - [cast estimate](./reference/cast/cast-estimate.md) - - [cast access-list](./reference/cast/cast-access-list.md) - - [cast logs](./reference/cast/cast-logs.md) - - [Block Commands](./reference/cast/block-commands.md) - - [cast find-block](./reference/cast/cast-find-block.md) - - [cast gas-price](./reference/cast/cast-gas-price.md) - - [cast block-number](./reference/cast/cast-block-number.md) - - [cast basefee](./reference/cast/cast-basefee.md) - - [cast block](./reference/cast/cast-block.md) - - [cast age](./reference/cast/cast-age.md) - - [Account Commands](./reference/cast/account-commands.md) - - [cast balance](./reference/cast/cast-balance.md) - - [cast storage](./reference/cast/cast-storage.md) - - [cast proof](./reference/cast/cast-proof.md) - - [cast nonce](./reference/cast/cast-nonce.md) - - [cast code](./reference/cast/cast-code.md) - - [cast codesize](./reference/cast/cast-codesize.md) - - [ENS Commands](./reference/cast/ens-commands.md) - - [cast lookup-address](./reference/cast/cast-lookup-address.md) - - [cast resolve-name](./reference/cast/cast-resolve-name.md) - - [cast namehash](./reference/cast/cast-namehash.md) - - [Etherscan Commands](./reference/cast/etherscan-commands.md) - - [cast etherscan-source](./reference/cast/cast-etherscan-source.md) - - [ABI Commands](./reference/cast/abi-commands.md) - - [cast abi-encode](./reference/cast/cast-abi-encode.md) - - [cast 4byte](./reference/cast/cast-4byte.md) - - [cast 4byte-decode](./reference/cast/cast-4byte-decode.md) - - [cast 4byte-event](./reference/cast/cast-4byte-event.md) - - [cast calldata](./reference/cast/cast-calldata.md) - - [cast pretty-calldata](./reference/cast/cast-pretty-calldata.md) - - [cast --abi-decode](./reference/cast/cast--abi-decode.md) - - [cast --calldata-decode](./reference/cast/cast--calldata-decode.md) - - [cast upload-signature](./reference/cast/cast-upload-signature.md) - - [Conversion Commands](./reference/cast/conversion-commands.md) - - [cast --format-bytes32-string](./reference/cast/cast--format-bytes32-string.md) - - [cast --from-bin](./reference/cast/cast--from-bin.md) - - [cast --from-fix](./reference/cast/cast--from-fix.md) - - [cast --from-rlp](./reference/cast/cast--from-rlp.md) - - [cast --from-utf8](./reference/cast/cast--from-utf8.md) - - [cast --parse-bytes32-string](./reference/cast/cast--parse-bytes32-string.md) - - [cast --to-ascii](./reference/cast/cast--to-ascii.md) - - [cast --to-base](./reference/cast/cast--to-base.md) - - [cast --to-bytes32](./reference/cast/cast--to-bytes32.md) - - [cast --to-fix](./reference/cast/cast--to-fix.md) - - [cast --to-hexdata](./reference/cast/cast--to-hexdata.md) - - [cast --to-int256](./reference/cast/cast--to-int256.md) - - [cast --to-rlp](./reference/cast/cast--to-rlp.md) - - [cast --to-uint256](./reference/cast/cast--to-uint256.md) - - [cast --to-unit](./reference/cast/cast--to-unit.md) - - [cast --to-wei](./reference/cast/cast--to-wei.md) - - [cast shl](./reference/cast/cast-shl.md) - - [cast shr](./reference/cast/cast-shr.md) - - [Utility Commands](./reference/cast/utility-commands.md) - - [cast sig](./reference/cast/cast-sig.md) - - [cast sig-event](./reference/cast/cast-sig-event.md) - - [cast keccak](./reference/cast/cast-keccak.md) - - [cast compute-address](./reference/cast/cast-compute-address.md) - - [cast create2](./reference/cast/cast-create2.md) - - [cast interface](./reference/cast/cast-interface.md) - - [cast index](./reference/cast/cast-index.md) - - [cast --concat-hex](./reference/cast/cast--concat-hex.md) - - [cast --max-int](./reference/cast/cast--max-int.md) - - [cast --min-int](./reference/cast/cast--min-int.md) - - [cast --max-uint](./reference/cast/cast--max-uint.md) - - [cast --to-checksum-address](./reference/cast/cast--to-checksum-address.md) - - [Wallet Commands](./reference/cast/wallet-commands.md) - - [cast wallet](./reference/cast/cast-wallet.md) - - [cast wallet new](./reference/cast/cast-wallet-new.md) - - [cast wallet address](./reference/cast/cast-wallet-address.md) - - [cast wallet sign](./reference/cast/cast-wallet-sign.md) - - [cast wallet vanity](./reference/cast/cast-wallet-vanity.md) - - [cast wallet verify](./reference/cast/cast-wallet-verify.md) -- [`anvil` Reference](./reference/anvil/README.md) -- [`chisel` Reference](./reference/chisel/README.md) -- [Config Reference](./reference/config/README.md) - - [Overview](./reference/config/overview.md) - - [Project](./reference/config/project.md) - - [Solidity Compiler](./reference/config/solidity-compiler.md) - - [Testing](./reference/config/testing.md) - - [In-line Configuration Testing](./reference/config/inline-test-config.md) - - [Formatter](./reference/config/formatter.md) - - [Documentation Generator](./reference/config/doc-generator.md) - - [Etherscan](./reference/config/etherscan.md) -- [Cheatcodes Reference](./cheatcodes/README.md) - - [Environment](./cheatcodes/environment.md) - - [`warp`](./cheatcodes/warp.md) - - [`roll`](./cheatcodes/roll.md) - - [`fee`](./cheatcodes/fee.md) - - [`difficulty`](./cheatcodes/difficulty.md) - - [`prevrandao`](./cheatcodes/prevrandao.md) - - [`chainId`](./cheatcodes/chain-id.md) - - [`store`](./cheatcodes/store.md) - - [`load`](./cheatcodes/load.md) - - [`etch`](./cheatcodes/etch.md) - - [`deal`](./cheatcodes/deal.md) - - [`prank`](./cheatcodes/prank.md) - - [`startPrank`](./cheatcodes/start-prank.md) - - [`stopPrank`](./cheatcodes/stop-prank.md) - - [`readCallers`](./cheatcodes/read-callers.md) - - [`record`](./cheatcodes/record.md) - - [`accesses`](./cheatcodes/accesses.md) - - [`recordLogs`](./cheatcodes/record-logs.md) - - [`getRecordedLogs`](./cheatcodes/get-recorded-logs.md) - - [`setNonce`](./cheatcodes/set-nonce.md) - - [`getNonce`](./cheatcodes/get-nonce.md) - - [`mockCall`](./cheatcodes/mock-call.md) - - [`mockCallRevert`](./cheatcodes/mock-call-revert.md) - - [`clearMockedCalls`](./cheatcodes/clear-mocked-calls.md) - - [`coinbase`](./cheatcodes/coinbase.md) - - [`broadcast`](./cheatcodes/broadcast.md) - - [`startBroadcast`](./cheatcodes/start-broadcast.md) - - [`stopBroadcast`](./cheatcodes/stop-broadcast.md) - - [`pauseGasMetering`](./cheatcodes/pause-gas-metering.md) - - [`resumeGasMetering`](./cheatcodes/resume-gas-metering.md) - - [`txGasPrice`](./cheatcodes/tx-gas-price.md) - - [Assertions](./cheatcodes/assertions.md) - - [`expectRevert`](./cheatcodes/expect-revert.md) - - [`expectEmit`](./cheatcodes/expect-emit.md) - - [`expectCall`](./cheatcodes/expect-call.md) - - [Fuzzer](./cheatcodes/fuzzer.md) - - [`assume`](./cheatcodes/assume.md) - - [Forking](./cheatcodes/forking.md) - - [`createFork`](./cheatcodes/create-fork.md) - - [`selectFork`](./cheatcodes/select-fork.md) - - [`createSelectFork`](./cheatcodes/create-select-fork.md) - - [`activeFork`](./cheatcodes/active-fork.md) - - [`rollFork`](./cheatcodes/roll-fork.md) - - [`makePersistent`](./cheatcodes/make-persistent.md) - - [`revokePersistent`](./cheatcodes/revoke-persistent.md) - - [`isPersistent`](./cheatcodes/is-persistent.md) - - [`allowCheatcodes`](./cheatcodes/allow-cheatcodes.md) - - [`transact`](./cheatcodes/transact.md) - - [External](./cheatcodes/external.md) - - [`ffi`](./cheatcodes/ffi.md) - - [`projectRoot`](./cheatcodes/project-root.md) - - [`getCode`](./cheatcodes/get-code.md) - - [`getDeployedCode`](./cheatcodes/get-deployed-code.md) - - [`setEnv`](./cheatcodes/set-env.md) - - [`envOr`](./cheatcodes/env-or.md) - - [`envBool`](./cheatcodes/env-bool.md) - - [`envUint`](./cheatcodes/env-uint.md) - - [`envInt`](./cheatcodes/env-int.md) - - [`envAddress`](./cheatcodes/env-address.md) - - [`envBytes32`](./cheatcodes/env-bytes32.md) - - [`envString`](./cheatcodes/env-string.md) - - [`envBytes`](./cheatcodes/env-bytes.md) - - [`parseJson`](./cheatcodes/parse-json.md) - - [`serializeJson`](./cheatcodes/serialize-json.md) - - [`writeJson`](./cheatcodes/write-json.md) - - [Utilities](./cheatcodes/utilities.md) - - [`addr`](./cheatcodes/addr.md) - - [`sign`](./cheatcodes/sign.md) - - [`skip`](./cheatcodes/skip.md) - - [`label`](./cheatcodes/label.md) - - [`deriveKey`](./cheatcodes/derive-key.md) - - [`parseBytes`](./cheatcodes/parse-bytes.md) - - [`parseAddress`](./cheatcodes/parse-address.md) - - [`parseUint`](./cheatcodes/parse-uint.md) - - [`parseInt`](./cheatcodes/parse-int.md) - - [`parseBytes32`](./cheatcodes/parse-bytes32.md) - - [`parseBool`](./cheatcodes/parse-bool.md) - - [`rememberKey`](./cheatcodes/remember-key.md) - - [`toString`](./cheatcodes/to-string.md) - - [`breakpoint`](./cheatcodes/breakpoint.md) - - [Snapshots](./cheatcodes/snapshots.md) - - [RPC](./cheatcodes/rpc.md) - - [Files](./cheatcodes/fs.md) -- [Forge Standard Library Reference](./reference/forge-std/README.md) - - [Std Logs](./reference/forge-std/std-logs.md) - - [Std Assertions](./reference/forge-std/std-assertions.md) - - [`fail`](./reference/forge-std/fail.md) - - [`assertFalse`](./reference/forge-std/assertFalse.md) - - [`assertEq`](./reference/forge-std/assertEq.md) - - [`assertApproxEqAbs`](./reference/forge-std/assertApproxEqAbs.md) - - [`assertApproxEqRel`](./reference/forge-std/assertApproxEqRel.md) - - [Std Cheats](./reference/forge-std/std-cheats.md) - - [`skip`](./reference/forge-std/skip.md) - - [`rewind`](./reference/forge-std/rewind.md) - - [`hoax`](./reference/forge-std/hoax.md) - - [`startHoax`](./reference/forge-std/startHoax.md) - - [`deal`](./reference/forge-std/deal.md) - - [`deployCode`](./reference/forge-std/deployCode.md) - - [`deployCodeTo`](./reference/forge-std/deployCodeTo.md) - - [`bound`](./reference/forge-std/bound.md) - - [`changePrank`](./reference/forge-std/change-prank.md) - - [`makeAddr`](./reference/forge-std/make-addr.md) - - [`makeAddrAndKey`](./reference/forge-std/make-addr-and-key.md) - - [`noGasMetering`](./reference/forge-std/noGasMetering.md) - - [`assumeNoPrecompiles`](./reference/forge-std/assume-no-precompiles.md) - - [`assumePayable`](./reference/forge-std/assume-payable.md) - - [Std Errors](./reference/forge-std/std-errors.md) - - [`assertionError`](./reference/forge-std/assertionError.md) - - [`arithmeticError`](./reference/forge-std/arithmeticError.md) - - [`divisionError`](./reference/forge-std/divisionError.md) - - [`enumConversionError`](./reference/forge-std/enumConversionError.md) - - [`encodeStorageError`](./reference/forge-std/encodeStorageError.md) - - [`popError`](./reference/forge-std/popError.md) - - [`indexOOBError`](./reference/forge-std/indexOOBError.md) - - [`memOverflowError`](./reference/forge-std/memOverflowError.md) - - [`zeroVarError`](./reference/forge-std/zeroVarError.md) - - [Std Storage](./reference/forge-std/std-storage.md) - - [`target`](./reference/forge-std/target.md) - - [`sig`](./reference/forge-std/sig.md) - - [`with_key`](./reference/forge-std/with_key.md) - - [`depth`](./reference/forge-std/depth.md) - - [`checked_write`](./reference/forge-std/checked_write.md) - - [`find`](./reference/forge-std/find.md) - - [`read`](./reference/forge-std/read.md) - - [Std Math](./reference/forge-std/std-math.md) - - [`abs`](./reference/forge-std/abs.md) - - [`delta`](./reference/forge-std/delta.md) - - [`percentDelta`](./reference/forge-std/percentDelta.md) - - [Script Utils](./reference/forge-std/script-utils.md) - - [`computeCreateAddress`](./reference/forge-std/compute-create-address.md) - - [`deriveRememberKey`](./reference/forge-std/derive-remember-key.md) - - [Console Logging](./reference/forge-std/console-log.md) -- [DSTest Reference](./reference/ds-test.md) +- [References by tool](./reference/README.md) + - [`forge` Commands](./reference/forge/README.md) + - [General Commands](./reference/forge/general-commands.md) + - [forge](./reference/forge/forge.md) + - [forge help](./reference/forge/forge-help.md) + - [forge completions](./reference/forge/forge-completions.md) + - [Project Commands](./reference/forge/project-commands.md) + - [forge init](./reference/forge/forge-init.md) + - [forge install](./reference/forge/forge-install.md) + - [forge update](./reference/forge/forge-update.md) + - [forge remove](./reference/forge/forge-remove.md) + - [forge config](./reference/forge/forge-config.md) + - [forge remappings](./reference/forge/forge-remappings.md) + - [forge tree](./reference/forge/forge-tree.md) + - [forge geiger](./reference/forge/forge-geiger.md) + - [Build Commands](./reference/forge/build-commands.md) + - [forge build](./reference/forge/forge-build.md) + - [forge clean](./reference/forge/forge-clean.md) + - [forge inspect](./reference/forge/forge-inspect.md) + - [Test Commands](./reference/forge/test-commands.md) + - [forge test](./reference/forge/forge-test.md) + - [forge snapshot](./reference/forge/forge-snapshot.md) + - [forge coverage](./reference/forge/forge-coverage.md) + - [Deploy Commands](./reference/forge/deploy-commands.md) + - [forge create](./reference/forge/forge-create.md) + - [forge verify-contract](./reference/forge/forge-verify-contract.md) + - [forge verify-check](./reference/forge/forge-verify-check.md) + - [forge flatten](./reference/forge/forge-flatten.md) + - [Utility Commands](./reference/forge/utility-commands.md) + - [forge debug](./reference/forge/forge-debug.md) + - [forge bind](./reference/forge/forge-bind.md) + - [forge cache](./reference/forge/forge-cache.md) + - [forge cache clean](./reference/forge/forge-cache-clean.md) + - [forge cache ls](./reference/forge/forge-cache-ls.md) + - [forge script](./reference/forge/forge-script.md) + - [forge upload-selectors](./reference/forge/forge-upload-selectors.md) + - [forge doc](./reference/forge/forge-doc.md) + - [`cast` Commands](./reference/cast/README.md) + - [General Commands](./reference/cast/general-commands.md) + - [cast](./reference/cast/cast.md) + - [cast help](./reference/cast/cast-help.md) + - [cast completions](./reference/cast/cast-completions.md) + - [Chain Commands](./reference/cast/chain-commands.md) + - [cast chain-id](./reference/cast/cast-chain-id.md) + - [cast chain](./reference/cast/cast-chain.md) + - [cast client](./reference/cast/cast-client.md) + - [Transaction Commands](./reference/cast/transaction-commands.md) + - [cast publish](./reference/cast/cast-publish.md) + - [cast receipt](./reference/cast/cast-receipt.md) + - [cast send](./reference/cast/cast-send.md) + - [cast call](./reference/cast/cast-call.md) + - [cast rpc](./reference/cast/cast-rpc.md) + - [cast tx](./reference/cast/cast-tx.md) + - [cast run](./reference/cast/cast-run.md) + - [cast estimate](./reference/cast/cast-estimate.md) + - [cast access-list](./reference/cast/cast-access-list.md) + - [cast logs](./reference/cast/cast-logs.md) + - [Block Commands](./reference/cast/block-commands.md) + - [cast find-block](./reference/cast/cast-find-block.md) + - [cast gas-price](./reference/cast/cast-gas-price.md) + - [cast block-number](./reference/cast/cast-block-number.md) + - [cast basefee](./reference/cast/cast-basefee.md) + - [cast block](./reference/cast/cast-block.md) + - [cast age](./reference/cast/cast-age.md) + - [Account Commands](./reference/cast/account-commands.md) + - [cast balance](./reference/cast/cast-balance.md) + - [cast storage](./reference/cast/cast-storage.md) + - [cast proof](./reference/cast/cast-proof.md) + - [cast nonce](./reference/cast/cast-nonce.md) + - [cast code](./reference/cast/cast-code.md) + - [cast codesize](./reference/cast/cast-codesize.md) + - [ENS Commands](./reference/cast/ens-commands.md) + - [cast lookup-address](./reference/cast/cast-lookup-address.md) + - [cast resolve-name](./reference/cast/cast-resolve-name.md) + - [cast namehash](./reference/cast/cast-namehash.md) + - [Etherscan Commands](./reference/cast/etherscan-commands.md) + - [cast etherscan-source](./reference/cast/cast-etherscan-source.md) + - [ABI Commands](./reference/cast/abi-commands.md) + - [cast abi-encode](./reference/cast/cast-abi-encode.md) + - [cast 4byte](./reference/cast/cast-4byte.md) + - [cast 4byte-decode](./reference/cast/cast-4byte-decode.md) + - [cast 4byte-event](./reference/cast/cast-4byte-event.md) + - [cast calldata](./reference/cast/cast-calldata.md) + - [cast pretty-calldata](./reference/cast/cast-pretty-calldata.md) + - [cast --abi-decode](./reference/cast/cast--abi-decode.md) + - [cast --calldata-decode](./reference/cast/cast--calldata-decode.md) + - [cast upload-signature](./reference/cast/cast-upload-signature.md) + - [Conversion Commands](./reference/cast/conversion-commands.md) + - [cast --format-bytes32-string](./reference/cast/cast--format-bytes32-string.md) + - [cast --from-bin](./reference/cast/cast--from-bin.md) + - [cast --from-fix](./reference/cast/cast--from-fix.md) + - [cast --from-rlp](./reference/cast/cast--from-rlp.md) + - [cast --from-utf8](./reference/cast/cast--from-utf8.md) + - [cast --parse-bytes32-string](./reference/cast/cast--parse-bytes32-string.md) + - [cast --to-ascii](./reference/cast/cast--to-ascii.md) + - [cast --to-base](./reference/cast/cast--to-base.md) + - [cast --to-bytes32](./reference/cast/cast--to-bytes32.md) + - [cast --to-fix](./reference/cast/cast--to-fix.md) + - [cast --to-hexdata](./reference/cast/cast--to-hexdata.md) + - [cast --to-int256](./reference/cast/cast--to-int256.md) + - [cast --to-rlp](./reference/cast/cast--to-rlp.md) + - [cast --to-uint256](./reference/cast/cast--to-uint256.md) + - [cast --to-unit](./reference/cast/cast--to-unit.md) + - [cast --to-wei](./reference/cast/cast--to-wei.md) + - [cast shl](./reference/cast/cast-shl.md) + - [cast shr](./reference/cast/cast-shr.md) + - [Utility Commands](./reference/cast/utility-commands.md) + - [cast sig](./reference/cast/cast-sig.md) + - [cast sig-event](./reference/cast/cast-sig-event.md) + - [cast keccak](./reference/cast/cast-keccak.md) + - [cast compute-address](./reference/cast/cast-compute-address.md) + - [cast create2](./reference/cast/cast-create2.md) + - [cast interface](./reference/cast/cast-interface.md) + - [cast index](./reference/cast/cast-index.md) + - [cast --concat-hex](./reference/cast/cast--concat-hex.md) + - [cast --max-int](./reference/cast/cast--max-int.md) + - [cast --min-int](./reference/cast/cast--min-int.md) + - [cast --max-uint](./reference/cast/cast--max-uint.md) + - [cast --to-checksum-address](./reference/cast/cast--to-checksum-address.md) + - [Wallet Commands](./reference/cast/wallet-commands.md) + - [cast wallet](./reference/cast/cast-wallet.md) + - [cast wallet new](./reference/cast/cast-wallet-new.md) + - [cast wallet address](./reference/cast/cast-wallet-address.md) + - [cast wallet sign](./reference/cast/cast-wallet-sign.md) + - [cast wallet vanity](./reference/cast/cast-wallet-vanity.md) + - [cast wallet verify](./reference/cast/cast-wallet-verify.md) + - [`anvil` Reference](./reference/anvil/README.md) + - [`chisel` Reference](./reference/chisel/README.md) + - [Config Reference](./reference/config/README.md) + - [Overview](./reference/config/overview.md) + - [Project](./reference/config/project.md) + - [Solidity Compiler](./reference/config/solidity-compiler.md) + - [Testing](./reference/config/testing.md) + - [In-line Configuration Testing](./reference/config/inline-test-config.md) + - [Formatter](./reference/config/formatter.md) + - [Documentation Generator](./reference/config/doc-generator.md) + - [Etherscan](./reference/config/etherscan.md) + - [Cheatcodes Reference](./cheatcodes/README.md) + - [Environment](./cheatcodes/environment.md) + - [`warp`](./cheatcodes/warp.md) + - [`roll`](./cheatcodes/roll.md) + - [`fee`](./cheatcodes/fee.md) + - [`difficulty`](./cheatcodes/difficulty.md) + - [`prevrandao`](./cheatcodes/prevrandao.md) + - [`chainId`](./cheatcodes/chain-id.md) + - [`store`](./cheatcodes/store.md) + - [`load`](./cheatcodes/load.md) + - [`etch`](./cheatcodes/etch.md) + - [`deal`](./cheatcodes/deal.md) + - [`prank`](./cheatcodes/prank.md) + - [`startPrank`](./cheatcodes/start-prank.md) + - [`stopPrank`](./cheatcodes/stop-prank.md) + - [`readCallers`](./cheatcodes/read-callers.md) + - [`record`](./cheatcodes/record.md) + - [`accesses`](./cheatcodes/accesses.md) + - [`recordLogs`](./cheatcodes/record-logs.md) + - [`getRecordedLogs`](./cheatcodes/get-recorded-logs.md) + - [`setNonce`](./cheatcodes/set-nonce.md) + - [`getNonce`](./cheatcodes/get-nonce.md) + - [`mockCall`](./cheatcodes/mock-call.md) + - [`mockCallRevert`](./cheatcodes/mock-call-revert.md) + - [`clearMockedCalls`](./cheatcodes/clear-mocked-calls.md) + - [`coinbase`](./cheatcodes/coinbase.md) + - [`broadcast`](./cheatcodes/broadcast.md) + - [`startBroadcast`](./cheatcodes/start-broadcast.md) + - [`stopBroadcast`](./cheatcodes/stop-broadcast.md) + - [`pauseGasMetering`](./cheatcodes/pause-gas-metering.md) + - [`resumeGasMetering`](./cheatcodes/resume-gas-metering.md) + - [`txGasPrice`](./cheatcodes/tx-gas-price.md) + - [Assertions](./cheatcodes/assertions.md) + - [`expectRevert`](./cheatcodes/expect-revert.md) + - [`expectEmit`](./cheatcodes/expect-emit.md) + - [`expectCall`](./cheatcodes/expect-call.md) + - [Fuzzer](./cheatcodes/fuzzer.md) + - [`assume`](./cheatcodes/assume.md) + - [Forking](./cheatcodes/forking.md) + - [`createFork`](./cheatcodes/create-fork.md) + - [`selectFork`](./cheatcodes/select-fork.md) + - [`createSelectFork`](./cheatcodes/create-select-fork.md) + - [`activeFork`](./cheatcodes/active-fork.md) + - [`rollFork`](./cheatcodes/roll-fork.md) + - [`makePersistent`](./cheatcodes/make-persistent.md) + - [`revokePersistent`](./cheatcodes/revoke-persistent.md) + - [`isPersistent`](./cheatcodes/is-persistent.md) + - [`allowCheatcodes`](./cheatcodes/allow-cheatcodes.md) + - [`transact`](./cheatcodes/transact.md) + - [External](./cheatcodes/external.md) + - [`ffi`](./cheatcodes/ffi.md) + - [`projectRoot`](./cheatcodes/project-root.md) + - [`getCode`](./cheatcodes/get-code.md) + - [`getDeployedCode`](./cheatcodes/get-deployed-code.md) + - [`setEnv`](./cheatcodes/set-env.md) + - [`envOr`](./cheatcodes/env-or.md) + - [`envBool`](./cheatcodes/env-bool.md) + - [`envUint`](./cheatcodes/env-uint.md) + - [`envInt`](./cheatcodes/env-int.md) + - [`envAddress`](./cheatcodes/env-address.md) + - [`envBytes32`](./cheatcodes/env-bytes32.md) + - [`envString`](./cheatcodes/env-string.md) + - [`envBytes`](./cheatcodes/env-bytes.md) + - [`parseJson`](./cheatcodes/parse-json.md) + - [`serializeJson`](./cheatcodes/serialize-json.md) + - [`writeJson`](./cheatcodes/write-json.md) + - [Utilities](./cheatcodes/utilities.md) + - [`addr`](./cheatcodes/addr.md) + - [`sign`](./cheatcodes/sign.md) + - [`skip`](./cheatcodes/skip.md) + - [`label`](./cheatcodes/label.md) + - [`deriveKey`](./cheatcodes/derive-key.md) + - [`parseBytes`](./cheatcodes/parse-bytes.md) + - [`parseAddress`](./cheatcodes/parse-address.md) + - [`parseUint`](./cheatcodes/parse-uint.md) + - [`parseInt`](./cheatcodes/parse-int.md) + - [`parseBytes32`](./cheatcodes/parse-bytes32.md) + - [`parseBool`](./cheatcodes/parse-bool.md) + - [`rememberKey`](./cheatcodes/remember-key.md) + - [`toString`](./cheatcodes/to-string.md) + - [`breakpoint`](./cheatcodes/breakpoint.md) + - [Snapshots](./cheatcodes/snapshots.md) + - [RPC](./cheatcodes/rpc.md) + - [Files](./cheatcodes/fs.md) + - [Forge Standard Library Reference](./reference/forge-std/README.md) + - [Std Logs](./reference/forge-std/std-logs.md) + - [Std Assertions](./reference/forge-std/std-assertions.md) + - [`fail`](./reference/forge-std/fail.md) + - [`assertFalse`](./reference/forge-std/assertFalse.md) + - [`assertEq`](./reference/forge-std/assertEq.md) + - [`assertApproxEqAbs`](./reference/forge-std/assertApproxEqAbs.md) + - [`assertApproxEqRel`](./reference/forge-std/assertApproxEqRel.md) + - [Std Cheats](./reference/forge-std/std-cheats.md) + - [`skip`](./reference/forge-std/skip.md) + - [`rewind`](./reference/forge-std/rewind.md) + - [`hoax`](./reference/forge-std/hoax.md) + - [`startHoax`](./reference/forge-std/startHoax.md) + - [`deal`](./reference/forge-std/deal.md) + - [`deployCode`](./reference/forge-std/deployCode.md) + - [`deployCodeTo`](./reference/forge-std/deployCodeTo.md) + - [`bound`](./reference/forge-std/bound.md) + - [`changePrank`](./reference/forge-std/change-prank.md) + - [`makeAddr`](./reference/forge-std/make-addr.md) + - [`makeAddrAndKey`](./reference/forge-std/make-addr-and-key.md) + - [`noGasMetering`](./reference/forge-std/noGasMetering.md) + - [`assumeNoPrecompiles`](./reference/forge-std/assume-no-precompiles.md) + - [`assumePayable`](./reference/forge-std/assume-payable.md) + - [Std Errors](./reference/forge-std/std-errors.md) + - [`assertionError`](./reference/forge-std/assertionError.md) + - [`arithmeticError`](./reference/forge-std/arithmeticError.md) + - [`divisionError`](./reference/forge-std/divisionError.md) + - [`enumConversionError`](./reference/forge-std/enumConversionError.md) + - [`encodeStorageError`](./reference/forge-std/encodeStorageError.md) + - [`popError`](./reference/forge-std/popError.md) + - [`indexOOBError`](./reference/forge-std/indexOOBError.md) + - [`memOverflowError`](./reference/forge-std/memOverflowError.md) + - [`zeroVarError`](./reference/forge-std/zeroVarError.md) + - [Std Storage](./reference/forge-std/std-storage.md) + - [`target`](./reference/forge-std/target.md) + - [`sig`](./reference/forge-std/sig.md) + - [`with_key`](./reference/forge-std/with_key.md) + - [`depth`](./reference/forge-std/depth.md) + - [`checked_write`](./reference/forge-std/checked_write.md) + - [`find`](./reference/forge-std/find.md) + - [`read`](./reference/forge-std/read.md) + - [Std Math](./reference/forge-std/std-math.md) + - [`abs`](./reference/forge-std/abs.md) + - [`delta`](./reference/forge-std/delta.md) + - [`percentDelta`](./reference/forge-std/percentDelta.md) + - [Script Utils](./reference/forge-std/script-utils.md) + - [`computeCreateAddress`](./reference/forge-std/compute-create-address.md) + - [`deriveRememberKey`](./reference/forge-std/derive-remember-key.md) + - [Console Logging](./reference/forge-std/console-log.md) + - [DSTest Reference](./reference/ds-test.md) # Testing From 513487d2c68e5e42afa9a4872a8aaaabd6df9bc8 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:15:12 -0400 Subject: [PATCH 05/17] chore: remove projects from reference --- src/SUMMARY.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 20da394f9..486edb30c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -5,10 +5,7 @@ # Getting Started - [Installation](./getting-started/installation.md) -- [First Steps with Foundry](./getting-started/first-steps.md) - -# Projects - + - [Creating a New Project](./projects/creating-a-new-project.md) - [Working on an Existing Project](./projects/working-on-an-existing-project.md) - [Dependencies](./projects/dependencies.md) From 15096546febcd191370ac7ec8ae9f36d9da5bb4e Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:18:37 -0400 Subject: [PATCH 06/17] chore: more reorg, tests and overviews before rereference --- src/SUMMARY.md | 84 ++++++++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 486edb30c..5a386377d 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -11,6 +11,49 @@ - [Dependencies](./projects/dependencies.md) - [Project Layout](./projects/project-layout.md) +# Testing + +- [Tests](./forge/tests.md) + - [Writing Tests](./forge/writing-tests.md) + - [Cheatcodes](./forge/cheatcodes.md) + - [Forge Standard Library Overview](./forge/forge-std.md) + - [Understanding Traces](./forge/traces.md) + - [Fork Testing](./forge/fork-testing.md) +- [Advanced Testing](./forge/advanced-testing.md) + - [Fuzz Testing](./forge/fuzz-testing.md) + - [Invariant Testing](./forge/invariant-testing.md) + - [Differential Testing](./forge/differential-ffi-testing.md) + + + +# Forge Overview + +- [Overview of Forge](forge/README.md) + + + + + + + +- [Deploying and Verifying](./forge/deploying.md) +- [Gas Tracking](./forge/gas-tracking.md) + - [Gas Reports](./forge/gas-reports.md) + - [Gas Snapshots](./forge/gas-snapshots.md) +- [Debugger](./forge/debugger.md) + +# Cast Overview + +- [Overview of Cast](./cast/README.md) + +# Anvil Overview + +- [Overview of Anvil](./anvil/README.md) + +# Chisel Overview + +- [Overview of Chisel](./chisel/README.md) + # References - [References by tool](./reference/README.md) @@ -285,47 +328,6 @@ - [Console Logging](./reference/forge-std/console-log.md) - [DSTest Reference](./reference/ds-test.md) -# Testing - -- [Tests](./forge/tests.md) - - [Writing Tests](./forge/writing-tests.md) - - [Cheatcodes](./forge/cheatcodes.md) - - [Forge Standard Library Overview](./forge/forge-std.md) - - [Understanding Traces](./forge/traces.md) - - [Fork Testing](./forge/fork-testing.md) -- [Advanced Testing](./forge/advanced-testing.md) - - [Fuzz Testing](./forge/fuzz-testing.md) - - [Invariant Testing](./forge/invariant-testing.md) - - [Differential Testing](./forge/differential-ffi-testing.md) - -# Forge Overview - -- [Overview of Forge](forge/README.md) - - - - - - - -- [Deploying and Verifying](./forge/deploying.md) -- [Gas Tracking](./forge/gas-tracking.md) - - [Gas Reports](./forge/gas-reports.md) - - [Gas Snapshots](./forge/gas-snapshots.md) -- [Debugger](./forge/debugger.md) - -# Cast Overview - -- [Overview of Cast](./cast/README.md) - -# Anvil Overview - -- [Overview of Anvil](./anvil/README.md) - -# Chisel Overview - -- [Overview of Chisel](./chisel/README.md) - # Configuration - [Configuring with `foundry.toml`](./config/README.md) From 2cb5ce6268a08150f32b4c61be76b764958b3cc8 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:20:50 -0400 Subject: [PATCH 07/17] put tutorials before configuration --- src/SUMMARY.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 5a386377d..99afd034f 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -328,15 +328,6 @@ - [Console Logging](./reference/forge-std/console-log.md) - [DSTest Reference](./reference/ds-test.md) -# Configuration - -- [Configuring with `foundry.toml`](./config/README.md) -- [Continuous Integration](./config/continous-integration.md) -- [Integrating with VSCode](./config/vscode.md) -- [Shell Autocompletion](./config/shell-autocompletion.md) -- [Static Analyzers](./config/static-analyzers.md) -- [Integrating with Hardhat](./config/hardhat.md) - # Tutorials - [Best Practices](./tutorials/best-practices.md) @@ -348,6 +339,15 @@ - [Learning Foundry Videos](./tutorials/learn-foundry.md) +# Configuration + +- [Configuring with `foundry.toml`](./config/README.md) +- [Continuous Integration](./config/continous-integration.md) +- [Integrating with VSCode](./config/vscode.md) +- [Shell Autocompletion](./config/shell-autocompletion.md) +- [Static Analyzers](./config/static-analyzers.md) +- [Integrating with Hardhat](./config/hardhat.md) + # Appendix - [FAQ](./faq.md) From 182c79338cb2da2cc6435a1b09c01afa0230bec8 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:28:40 -0400 Subject: [PATCH 08/17] chore: expose invariant bonding curve tutorial --- src/SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 99afd034f..fe15a1869 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -336,6 +336,7 @@ - [Testing EIP-712 Signatures](./tutorials/testing-eip712.md) - [Solidity Scripting](./tutorials/solidity-scripting.md) - [Forking Mainnet with Cast and Anvil](./tutorials/forking-mainnet-with-cast-anvil.md) +- [Invariant Testing a Bonding Curve](./tutorials/invariant-testing-bonding-curve.md) - [Learning Foundry Videos](./tutorials/learn-foundry.md) From 17ee16c738c3f9e8187e4798e598456dcd123825 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 00:31:09 -0400 Subject: [PATCH 09/17] chore: fix 404 --- src/tutorials/invariant-testing-bonding-curve.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tutorials/invariant-testing-bonding-curve.md b/src/tutorials/invariant-testing-bonding-curve.md index 3107d160b..10930d7b7 100644 --- a/src/tutorials/invariant-testing-bonding-curve.md +++ b/src/tutorials/invariant-testing-bonding-curve.md @@ -7,7 +7,7 @@ This tutorial will cover invariant testing, using **Bonding Curve Implementation However, this guide is for educational purposes only. The code is not audited. Please do not use it in production. -> 💡 Note: A full implementation of the bonding curve can be found [here](https://github.com/Ratimon/bonding-curves), and for further reading about invariant testing, we can check out the `Invariant Testing` [reference](../reference/forge/invariant-testing.md). +> 💡 Note: A full implementation of the bonding curve can be found [here](https://github.com/Ratimon/bonding-curves), and for further reading about invariant testing, we can check out the `Invariant Testing` [reference](../forge/invariant-testing.md). ### Quick Start From 5f1cd982178f4a29908f497e0322ad17544490ba Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 12:03:18 -0400 Subject: [PATCH 10/17] chore: include tree on output file --- src/output/invariant_tut/directories | 14 ++++++++++++++ src/tutorials/invariant-testing-bonding-curve.md | 6 +----- 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 src/output/invariant_tut/directories diff --git a/src/output/invariant_tut/directories b/src/output/invariant_tut/directories new file mode 100644 index 000000000..4b25f64fd --- /dev/null +++ b/src/output/invariant_tut/directories @@ -0,0 +1,14 @@ +// ANCHOR: all +// ANCHOR: command +$ tree . -d -L 1 +// ANCHOR_END: command +// ANCHOR: output +. +├── Makefile +├── foundry.toml +├── test +└──── invariant + +4 directories +// ANCHOR_END: output +// ANCHOR_END: all diff --git a/src/tutorials/invariant-testing-bonding-curve.md b/src/tutorials/invariant-testing-bonding-curve.md index 10930d7b7..4aea3d46a 100644 --- a/src/tutorials/invariant-testing-bonding-curve.md +++ b/src/tutorials/invariant-testing-bonding-curve.md @@ -30,11 +30,7 @@ The key consderation is to define these: To get started, we are going to focus on the following directories in this [repository](https://github.com/Ratimon/bonding-curves): ``` -. -├── Makefile -├── foundry.toml -└── test - ├── invariant +{{#include ../output/invariant_tut/directories:all}} ``` In this guide, we can run the fuzzing campagin by running the following command: From 1d6e00e1f217292e41139a8da834728ee25211fd Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 12:08:55 -0400 Subject: [PATCH 11/17] chore: not use tree --- src/tutorials/invariant-testing-bonding-curve.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tutorials/invariant-testing-bonding-curve.md b/src/tutorials/invariant-testing-bonding-curve.md index 4aea3d46a..762cd4808 100644 --- a/src/tutorials/invariant-testing-bonding-curve.md +++ b/src/tutorials/invariant-testing-bonding-curve.md @@ -3,7 +3,7 @@ ### Introduction -This tutorial will cover invariant testing, using **Bonding Curve Implementation** as a target example. All invariant tests are written in Solidity using the `Foundry Invaraint Testing` feature. +This tutorial will cover invariant testing, using **Bonding Curve Implementation** as a target example. All invariant tests are written in Solidity using the `Foundry Invariant Testing` feature. However, this guide is for educational purposes only. The code is not audited. Please do not use it in production. @@ -30,7 +30,9 @@ The key consderation is to define these: To get started, we are going to focus on the following directories in this [repository](https://github.com/Ratimon/bonding-curves): ``` -{{#include ../output/invariant_tut/directories:all}} +- foundry.toml +- invariant.sol +- Makefile ``` In this guide, we can run the fuzzing campagin by running the following command: From 144428ada0d2182118d61c3c5e37c1222fd20846 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Wed, 5 Jul 2023 12:27:12 -0400 Subject: [PATCH 12/17] chore: avoid using the tree --- src/tutorials/invariant-testing-bonding-curve.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/tutorials/invariant-testing-bonding-curve.md b/src/tutorials/invariant-testing-bonding-curve.md index 762cd4808..414dc6928 100644 --- a/src/tutorials/invariant-testing-bonding-curve.md +++ b/src/tutorials/invariant-testing-bonding-curve.md @@ -27,15 +27,7 @@ The key consderation is to define these: 2. **Actions** (a set of things that can happen during each run) -To get started, we are going to focus on the following directories in this [repository](https://github.com/Ratimon/bonding-curves): - -``` -- foundry.toml -- invariant.sol -- Makefile -``` - -In this guide, we can run the fuzzing campagin by running the following command: +To get started, make sure to clone the repository. All commands will be available in the `Makefile`. We can run the fuzzing campagin by running the following command: ```sh make invariant-LinearBondingCurve From 4938762ca69f71917d89c9040794423a01a7b086 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 6 Jul 2023 11:15:11 -0400 Subject: [PATCH 13/17] chore: rename section --- src/SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index fe15a1869..a9067cb9c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -13,7 +13,7 @@ # Testing -- [Tests](./forge/tests.md) +- [Basics of Testing With Foundry](./forge/tests.md) - [Writing Tests](./forge/writing-tests.md) - [Cheatcodes](./forge/cheatcodes.md) - [Forge Standard Library Overview](./forge/forge-std.md) From bbbdc2949d12299921544a1d099bec4be33a3645 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 6 Jul 2023 11:36:59 -0400 Subject: [PATCH 14/17] chore: modify testing intro --- src/forge/tests.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/forge/tests.md b/src/forge/tests.md index d90aa9725..1cb043bc5 100644 --- a/src/forge/tests.md +++ b/src/forge/tests.md @@ -1,5 +1,7 @@ ## Tests +Testing on Foundry is done using `forge`. Here we'll learn how to perform basic and more advanced testing and to leverage unique functionality such as cheatcodes. + Forge can run your tests with the [`forge test`](../reference/forge/forge-test.md) command. All tests are written in Solidity. Forge will look for the tests anywhere in your source directory. Any contract with a function that starts with `test` is considered to be a test. Usually, tests will be placed in `test/` by convention and end with `.t.sol`. From 364575da97ebc35a4b68c8c78eb9c3c85d2393bc Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 6 Jul 2023 11:44:50 -0400 Subject: [PATCH 15/17] chore: move testing into its own folder --- src/SUMMARY.md | 20 +++++++++---------- src/{forge => testing}/advanced-testing.md | 0 src/{forge => testing}/cheatcodes.md | 0 .../differential-ffi-testing.md | 0 src/{forge => testing}/forge-std.md | 0 src/{forge => testing}/fork-testing.md | 0 src/{forge => testing}/fuzz-testing.md | 0 src/{forge => testing}/invariant-testing.md | 0 src/{forge => testing}/tests.md | 0 src/{forge => testing}/traces.md | 0 src/{forge => testing}/writing-tests.md | 0 11 files changed, 10 insertions(+), 10 deletions(-) rename src/{forge => testing}/advanced-testing.md (100%) rename src/{forge => testing}/cheatcodes.md (100%) rename src/{forge => testing}/differential-ffi-testing.md (100%) rename src/{forge => testing}/forge-std.md (100%) rename src/{forge => testing}/fork-testing.md (100%) rename src/{forge => testing}/fuzz-testing.md (100%) rename src/{forge => testing}/invariant-testing.md (100%) rename src/{forge => testing}/tests.md (100%) rename src/{forge => testing}/traces.md (100%) rename src/{forge => testing}/writing-tests.md (100%) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a9067cb9c..2734a422a 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -13,16 +13,16 @@ # Testing -- [Basics of Testing With Foundry](./forge/tests.md) - - [Writing Tests](./forge/writing-tests.md) - - [Cheatcodes](./forge/cheatcodes.md) - - [Forge Standard Library Overview](./forge/forge-std.md) - - [Understanding Traces](./forge/traces.md) - - [Fork Testing](./forge/fork-testing.md) -- [Advanced Testing](./forge/advanced-testing.md) - - [Fuzz Testing](./forge/fuzz-testing.md) - - [Invariant Testing](./forge/invariant-testing.md) - - [Differential Testing](./forge/differential-ffi-testing.md) +- [Basics of Testing With Foundry](./testing/tests.md) + - [Writing Tests](./testing/writing-tests.md) + - [Cheatcodes](./testing/cheatcodes.md) + - [Forge Standard Library Overview](./testing/forge-std.md) + - [Understanding Traces](./testing/traces.md) + - [Fork Testing](./testing/fork-testing.md) +- [Advanced Testing](./testing/advanced-testing.md) + - [Fuzz Testing](./testing/fuzz-testing.md) + - [Invariant Testing](./testing/invariant-testing.md) + - [Differential Testing](./testing/differential-ffi-testing.md) diff --git a/src/forge/advanced-testing.md b/src/testing/advanced-testing.md similarity index 100% rename from src/forge/advanced-testing.md rename to src/testing/advanced-testing.md diff --git a/src/forge/cheatcodes.md b/src/testing/cheatcodes.md similarity index 100% rename from src/forge/cheatcodes.md rename to src/testing/cheatcodes.md diff --git a/src/forge/differential-ffi-testing.md b/src/testing/differential-ffi-testing.md similarity index 100% rename from src/forge/differential-ffi-testing.md rename to src/testing/differential-ffi-testing.md diff --git a/src/forge/forge-std.md b/src/testing/forge-std.md similarity index 100% rename from src/forge/forge-std.md rename to src/testing/forge-std.md diff --git a/src/forge/fork-testing.md b/src/testing/fork-testing.md similarity index 100% rename from src/forge/fork-testing.md rename to src/testing/fork-testing.md diff --git a/src/forge/fuzz-testing.md b/src/testing/fuzz-testing.md similarity index 100% rename from src/forge/fuzz-testing.md rename to src/testing/fuzz-testing.md diff --git a/src/forge/invariant-testing.md b/src/testing/invariant-testing.md similarity index 100% rename from src/forge/invariant-testing.md rename to src/testing/invariant-testing.md diff --git a/src/forge/tests.md b/src/testing/tests.md similarity index 100% rename from src/forge/tests.md rename to src/testing/tests.md diff --git a/src/forge/traces.md b/src/testing/traces.md similarity index 100% rename from src/forge/traces.md rename to src/testing/traces.md diff --git a/src/forge/writing-tests.md b/src/testing/writing-tests.md similarity index 100% rename from src/forge/writing-tests.md rename to src/testing/writing-tests.md From 9192657a1c87b95397c41f9b08296237ead10432 Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 6 Jul 2023 12:19:20 -0400 Subject: [PATCH 16/17] feat: add new testing overview --- src/SUMMARY.md | 2 +- src/forge/testing.md | 58 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/forge/testing.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 2734a422a..c47898c0e 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -29,7 +29,7 @@ # Forge Overview - [Overview of Forge](forge/README.md) - + - [Testing Overview](forge/testing.md) ! diff --git a/src/forge/testing.md b/src/forge/testing.md new file mode 100644 index 000000000..481349546 --- /dev/null +++ b/src/forge/testing.md @@ -0,0 +1,58 @@ +## Testing + +Forge's flagship feature is testing. Tests are performed using Solidity, and it's blazing fast. + +## Unit tests + +Unit tests make up the most basic form of testing supported by Forge. + +```sh +{{#include ../output/hello_foundry/forge-test:all}} +``` + +For more information on property based tests, go [to the corresponding section on the Testing section](../testing/tests.md). + +## Property Based Tests + +Property based tests are also supported in forge. They're really effective for testing general behavior and uncovering edge cases. + +Writing a fuzz tests is as easy as creating a normal test function with parameters. + +```solidity +pragma solidity 0.8.10; + +import "forge-std/Test.sol"; + +contract ContractBTest is Test { + uint256 testNumber; + + function setUp() public { + testNumber = 42; + } + + function add(uint256 a, uint256 b) external returns (uint256) { + return a + b; + } + + function test_fuzzAdd(uint256 x, uint256 y) public { + // We can limit the range of our inputs using bound. + x = bound(x, 0, 100); + y = bound(y, 0, 100); + uint256 result = add(x, y); + assertEq(x + y, result); + } +} +``` + +For more information on property based tests, go [to the corresponding section on the Testing section](../testing/fuzz-testing.md). + +## Stateful Fuzz Tests + +Stateful fuzz tests (also commonly called Invariant Tests in the community) are a really useful form of advanced testing available on Foundry. They allow for a set of invariant expressions to be tested against randomized sequences of pre-defined function calls from pre-defined contracts. After each function call is performed, all defined invariants are asserted. + +For more information on stateful fuzz tests, go [to the corresponding section on the Testing section](../testing/invariant-testing.md). + +## Cheatcodes + +Forge has a powerful feature to help you write comprehensive tests for your smart contract suite called cheatcodes. They help you manipulate the state of the local blockchain and EVM, which means you can easily replicate extreme conditions on your tests or mainnet conditions outright. They're easily accessible through the `vm` instance available in Forge Standard Library's `Test` contract. + From 6372dc129976917ff1b8e2e6809cb6110dcb5e0c Mon Sep 17 00:00:00 2001 From: Enrique Ortiz Date: Thu, 6 Jul 2023 12:21:20 -0400 Subject: [PATCH 17/17] correct phrase on tesing --- src/forge/testing.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/forge/testing.md b/src/forge/testing.md index 481349546..641c8b158 100644 --- a/src/forge/testing.md +++ b/src/forge/testing.md @@ -10,7 +10,7 @@ Unit tests make up the most basic form of testing supported by Forge. {{#include ../output/hello_foundry/forge-test:all}} ``` -For more information on property based tests, go [to the corresponding section on the Testing section](../testing/tests.md). +For more information on unit tests, go [to the Testing section](../testing/tests.md). ## Property Based Tests @@ -44,13 +44,13 @@ contract ContractBTest is Test { } ``` -For more information on property based tests, go [to the corresponding section on the Testing section](../testing/fuzz-testing.md). +For more information on property based tests, go [to the fuzz testing page on the Testing section](../testing/fuzz-testing.md). ## Stateful Fuzz Tests Stateful fuzz tests (also commonly called Invariant Tests in the community) are a really useful form of advanced testing available on Foundry. They allow for a set of invariant expressions to be tested against randomized sequences of pre-defined function calls from pre-defined contracts. After each function call is performed, all defined invariants are asserted. -For more information on stateful fuzz tests, go [to the corresponding section on the Testing section](../testing/invariant-testing.md). +For more information on stateful fuzz tests, go [to the stateful fuzz testing page on the Testing section](../testing/invariant-testing.md). ## Cheatcodes