git clone https://github.com/sentimentxyz/protocol-v2.git
forge b
forge t --force # recompile and run all tests
forge t --nmt "Fork" # skip fork tests
forge t --nmt "invariant" # skip invariant tests
forge t --nmt "Fork|invariant" # skip both
Forked tests require a FORK_TEST_CONFIG
param to be set in .env
and valid params in the corresponding JSON config file.
Sample fork-test-config.json
:
{
"minLtv": 0,
"liquidationFee": 0,
"owner": "0x000000000000000000000000000000000000dEaD",
"pool": "0x000000000000000000000000000000000000dEaD",
"positionManager": "0x000000000000000000000000000000000000dEaD",
"riskEngine": "0x000000000000000000000000000000000000dEaD",
"usdc": "0x000000000000000000000000000000000000dEaD",
"sender": "0x000000000000000000000000000000000000dEaD"
}
Project remappings are defined in foundry.toml
. If your LSP is unable to detect these, try copying them to
remappings.txt
and recompiling.
Scripts requires the SCRIPT_CONFIG
to be set in .env
and a valid config file. For broadcasted transactions, the
private key specified via PRIVATE_KEY
in .env
is used.
SCRIPT_CONFIG
points to a JSON file with multiple objects. Each object represents the name of the script which uses
the paramaters specified by the object.
Sample script-config.json
with paramaters for InitializePool.s.sol
:
{
"InitializePool": {
"pool": "0x0000000000000000000000000000000000000000",
"owner": "0x0000000000000000000000000000000000000000",
"asset": "0x0000000000000000000000000000000000000000",
"rateModel": "0x0000000000000000000000000000000000000000",
"interestFee": 0,
"originationFee": 0,
"poolCap": 0
}
}
Summarizing the above, the .env
needs the following:
SCRIPT_CONFIG='<script-config>.json'
FORK_TEST_CONFIG='<fork-test-config>.json'
PRIVATE_KEY=<private-key-for-broadcast-txns>