From 25538325c77b847e8f8a15835fb3b4cf5ba82e8a Mon Sep 17 00:00:00 2001 From: JulesCrown Date: Tue, 12 Mar 2024 12:01:48 +0100 Subject: [PATCH] chore: forge init --- onchain/README.md | 68 ++++++++++++++++++++++++++++++------ onchain/script/Counter.s.sol | 2 +- onchain/test/Counter.t.sol | 8 ++--- 3 files changed, 63 insertions(+), 15 deletions(-) diff --git a/onchain/README.md b/onchain/README.md index a49ba09..9265b45 100644 --- a/onchain/README.md +++ b/onchain/README.md @@ -1,18 +1,66 @@ -## Build +## Foundry -``` -forge build +**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.** + +Foundry consists of: + +- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools). +- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data. +- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network. +- **Chisel**: Fast, utilitarian, and verbose solidity REPL. + +## Documentation + +https://book.getfoundry.sh/ + +## Usage + +### Build + +```shell +$ forge build ``` -## Test +### Test -``` -forge test +```shell +$ forge test ``` -## Deploy +### Format +```shell +$ forge fmt +``` + +### Gas Snapshots + +```shell +$ forge snapshot +``` + +### Anvil + +```shell +$ anvil +``` + +### Deploy + +```shell +$ forge script script/Counter.s.sol:CounterScript --rpc-url --private-key +``` + +### Cast + +```shell +$ cast +``` + +### Help + +```shell +$ forge --help +$ anvil --help +$ cast --help ``` -source .env -forge script script/Deploy.sol:GoerliScript --broadcast --verify --rpc-url ${GOERLI_RPC_URL} -``` \ No newline at end of file diff --git a/onchain/script/Counter.s.sol b/onchain/script/Counter.s.sol index 0e546ab..df9ee8b 100644 --- a/onchain/script/Counter.s.sol +++ b/onchain/script/Counter.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -import "forge-std/Script.sol"; +import {Script, console} from "forge-std/Script.sol"; contract CounterScript is Script { function setUp() public {} diff --git a/onchain/test/Counter.t.sol b/onchain/test/Counter.t.sol index 30235e8..54b724f 100644 --- a/onchain/test/Counter.t.sol +++ b/onchain/test/Counter.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -import "forge-std/Test.sol"; -import "../src/Counter.sol"; +import {Test, console} from "forge-std/Test.sol"; +import {Counter} from "../src/Counter.sol"; contract CounterTest is Test { Counter public counter; @@ -12,12 +12,12 @@ contract CounterTest is Test { counter.setNumber(0); } - function testIncrement() public { + function test_Increment() public { counter.increment(); assertEq(counter.number(), 1); } - function testSetNumber(uint256 x) public { + function testFuzz_SetNumber(uint256 x) public { counter.setNumber(x); assertEq(counter.number(), x); }