Default foundry configuration
[profile.default]
# The source directory
src = 'src'
# The test directory
test = 'test'
# The script directory
script = 'script'
# The artifact directory
out = 'out'
# A list of paths to look for libraries in
libs = ['lib']
# A list of remappings
remappings = []
# Whether to autodetect remappings by scanning the `libs` folders recursively
auto_detect_remappings = true
# A list of deployed libraries to link against
libraries = []
# Whether to cache builds or not
cache = true
# The cache directory if enabled
cache_path = 'cache'
# Where the broadcast logs are stored
broadcast = 'broadcast'
# additional solc allow paths
allow_paths = []
# additional solc include paths
include_paths = []
# Whether to ignore the cache
force = false
# The EVM version by hardfork name
evm_version = 'london'
# A list of contracts to output gas reports for
gas_reports = ['*']
# A list of contracts to ignore for gas reports
gas_reports_ignore = []
# Override the Solidity version (this overrides `auto_detect_solc`)
#solc_version = '0.8.10'
# Whether or not Forge should auto-detect the solc version to use
auto_detect_solc = true
# Disables downloading missing solc versions
offline = false
# Enables or disables the optimizer
optimizer = false
# The number of optimizer runs
optimizer_runs = 200
# The verbosity of tests
verbosity = 0
# A list of ignored solc error codes
ignored_error_codes = [1878, 5574]
# Whether contract build warnings will cause compilation to fail
deny_warnings = false
# Configures the permissions of cheat codes that touch the file system
fs_permissions = []
# Whether to emit additional build info files
build_info = false
# Whether or not to enable `vm.ffi`
ffi = false
# The address of `msg.sender` in tests
sender = '0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38'
# The address of `tx.origin` in tests
tx_origin = '0x1804c8AB1F12E6bbf3894d4083f33e07309d1f38'
# The initial balance of the test contract
initial_balance = '0xffffffffffffffffffffffff'
# The chain ID we are on in tests
chain_id = 31337
# The `block.number` value during EVM execution
block_number = 1
# The gas limit in tests
gas_limit = 9223372036854775807
# The gas price in tests (in wei)
gas_price = 0
# The block basefee in tests (in wei)
block_base_fee_per_gas = 0
# The address of `block.coinbase` in tests
block_coinbase = '0x0000000000000000000000000000000000000000'
# The block timestamp in tests
block_timestamp = 1
# The block difficulty in tests
block_difficulty = 0
# The memory limit of the EVM (32 MB by default)
memory_limit = 33554432
# Extra output to include in the contract's artifact.
extra_output = []
# Extra output to write to separate files.
extra_output_files = []
# Print the names of the compiled contracts
names = false
# Print the sizes of the compiled contracts
sizes = false
# Whether or not to use the Yul intermediate representation compilation pipeline
via_ir = false
# Enables or disables RPC caching when forking
no_storage_caching = false
# Use the given hash method for the metadata hash that is appended
# to the bytecode.
# The metadata hash can be removed from the bytecode by setting "none"
bytecode_hash = "ipfs"
# How to treat revert (and require) reason strings
revert_strings = "default"
# If enabled, the Solidity compiler is instructed to generate bytecode
# only for the required contracts. This can reduce compile time
# for `forge test`, but is experimental.
sparse_mode = false
# Contains alias -> URL|Env pairs for RPC endpoints that can be accessed during testing
rpc_endpoints = { optimism = "https://optimism.alchemyapi.io/v2/...", mainnet = "${RPC_MAINNET}" }
# The Solc instance to use if any.
# This takes precedence over `auto_detect_solc`, if a version is set then this overrides auto-detection.
#solc = None
# Switch optimizer components on or off in detail
#optimizer_details = None
# Model checker settings.
#model_checker = None,
# Url of the rpc server that should be used for any rpc calls
#eth_rpc_url = None
# Etherscan API key
#etherscan_api_key = None
# Only run test functions matching the specified regex pattern
#match_test = None
# Only run test functions that do not match the specified regex pattern
#no_match_test = None
# Only run tests in contracts matching the specified regex pattern
#match_contract = None
# Only run tests in contracts that do not match the specified regex pattern
#no_match_contract = None
# Only run tests in source files matching the specified glob pattern
#match_path = None
# Only run tests in source files that do not match the specified glob pattern
#no_match_path = None
# Only show coverage for files that do not match the specified regex pattern.
#no_match_coverage = None
# Number of threads to use. Not set or zero specifies the number of logical cores.
#threads = 0
# Whether to show test execution progress
#show_progress = false
# Pins the block number for the state fork
#fork_block_number = None
# The block gas limit
#block_gas_limit = None
# The path to the `build-info` directory that contains the build info json files
#build_info_path = None
# Whether to allow `expectRevert` for internal functions.
allow_internal_expect_revert = false
# Use the create 2 factory in all cases including tests and non-broadcasting scripts.
always_use_create_2_factory = false
# The CREATE2 deployer address to use.
create2_deployer = "0x4e59b44847b379578588920ca78fbf26c0b4956c"
# CREATE2 salt to use for the library deployment in scripts.
create2_library_salt = "0x0000000000000000000000000000000000000000000000000000000000000000"
[fmt]
# Maximum line length where formatter will try to wrap the line
line_length = 120
# Number of spaces per indentation level
tab_width = 4
# Print spaces between brackets
bracket_spacing = false
# Style of uint/int256 types
int_types = "long"
# If function parameters are multiline then always put the function attributes on separate lines
func_attrs_with_params_multiline = true
# Style of quotation marks
quote_style = "double"
# Style of underscores in number literals
number_underscore = "preserve"
[fuzz]
# The number of fuzz runs for fuzz tests
runs = 256
# The maximum number of test case rejections allowed by proptest, to be
# encountered during usage of `vm.assume` cheatcode. This will be used
# to set the `max_global_rejects` value in proptest test runner config.
# `max_local_rejects` option isn't exposed here since we're not using
# `prop_filter`.
max_test_rejects = 65536
# The weight of the dictionary
dictionary_weight = 40
# The flag indicating whether to include values from storage
include_storage = true
# The flag indicating whether to include push bytes values
include_push_bytes = true
# Number of runs to include in the gas report.
gas_report_samples = 256
# Path where fuzz failures are recorded and replayed.
# failure_persist_dir = /path/to/persist/dir
# Name of the file to record fuzz failures, defaults to `failures`.
# failure_persist_file = "failures"
# Show `console.log` in fuzz test.
show_logs = false
[invariant]
# The number of runs that must execute for each invariant test group
runs = 256
# The number of calls executed to attempt to break invariants in one run
depth = 15
# Fails the invariant fuzzing if a revert occurs
fail_on_revert = false
# Allows overriding an unsafe external call when running invariant tests. eg. reentrancy checks
call_override = false
# The weight of the dictionary
dictionary_weight = 80
# The flag indicating whether to include values from storage
include_storage = true
# The flag indicating whether to include push bytes values
include_push_bytes = true
# The maximum number of attempts to shrink the sequence.
shrink_run_limit = 5000
# The maximum number of rejects via `vm.assume` which can be encountered during a single
# invariant run.
max_assume_rejects = 65536
# Number of runs to include in the gas report.
gas_report_samples = 256
# Path where invariant failures are recorded and replayed.
# failure_persist_dir = /path/to/persist/dir
# Whether to collect and display fuzzed selectors metrics.
show_metrics = false