Template repository for getting started quickly with Foundry and ETK projects
Click "Use this template" on GitHub to create a new repository with this repo as the initial state.
Or, if your repo already exists, run:
forge init
forge build
forge test
Or, run this command
forge init --template Saw-mon-and-Natalie/forge-etk-template <PROJECT_NAME>
For Visual Studio Code, you can use the vscode-evm-toolkit extension.
All you need is to import forge-std/Test.sol
and then inherit it from your test contract. Forge-std's Test contract comes with a pre-instatiated cheatcodes environment, the vm
. It also has support for ds-test-style logs and assertions. Finally, it supports Hardhat's console.log. The logging functionalities require -vvvv
.
pragma solidity 0.8.10;
import "forge-std/Test.sol";
contract ContractTest is Test {
function testExample() public {
vm.roll(100);
console.log(1);
emit log("hi");
assertTrue(true);
}
}
Make sure you load and etch your compiled bytecode, similiar to the following pattern:
string[] memory inputs = new string[](2);
/**
* windows: scripts/compile.bat
* linux : scripts/compile.sh
*/
inputs[0] = "scripts/compile.bat";
// path/to/contract.etk
inputs[1] = "src/Contract.etk";
bytes memory bytecode = vm.ffi(inputs);
emit logs(bytecode);
vm.etch(addr, bytecode);
On a Windows machine, you would need to use the scripts/compile.bat
and on Linux scripts/compile.sh
.
Sample test file is provided in test/Contract.t.sol
.
This project uses Foundry. See the book for instructions on how to install and use Foundry.