Compare commits
4 Commits
54dda02722
...
cff92193ec
| Author | SHA1 | Date | |
|---|---|---|---|
| cff92193ec | |||
| 4974b656b7 | |||
| 3679b8e055 | |||
| 7fc3d173d8 |
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -40,3 +40,6 @@
|
|||||||
[submodule "lottery/lib/foundry-devops"]
|
[submodule "lottery/lib/foundry-devops"]
|
||||||
path = lottery/lib/foundry-devops
|
path = lottery/lib/foundry-devops
|
||||||
url = https://github.com/cyfrin/foundry-devops
|
url = https://github.com/cyfrin/foundry-devops
|
||||||
|
[submodule "soldeer-package-manager/lib/forge-std"]
|
||||||
|
path = soldeer-package-manager/lib/forge-std
|
||||||
|
url = https://github.com/foundry-rs/forge-std
|
||||||
|
|||||||
43
soldeer-package-manager/.github/workflows/test.yml
vendored
Normal file
43
soldeer-package-manager/.github/workflows/test.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
FOUNDRY_PROFILE: ci
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
|
||||||
|
name: Foundry project
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install Foundry
|
||||||
|
uses: foundry-rs/foundry-toolchain@v1
|
||||||
|
|
||||||
|
- name: Show Forge version
|
||||||
|
run: |
|
||||||
|
forge --version
|
||||||
|
|
||||||
|
- name: Run Forge fmt
|
||||||
|
run: |
|
||||||
|
forge fmt --check
|
||||||
|
id: fmt
|
||||||
|
|
||||||
|
- name: Run Forge build
|
||||||
|
run: |
|
||||||
|
forge build --sizes
|
||||||
|
id: build
|
||||||
|
|
||||||
|
- name: Run Forge tests
|
||||||
|
run: |
|
||||||
|
forge test -vvv
|
||||||
|
id: test
|
||||||
18
soldeer-package-manager/.gitignore
vendored
Normal file
18
soldeer-package-manager/.gitignore
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Compiler files
|
||||||
|
cache/
|
||||||
|
out/
|
||||||
|
|
||||||
|
# Ignores development broadcast logs
|
||||||
|
!/broadcast
|
||||||
|
/broadcast/*/31337/
|
||||||
|
/broadcast/**/dry-run/
|
||||||
|
|
||||||
|
# Docs
|
||||||
|
docs/
|
||||||
|
|
||||||
|
# Dotenv file
|
||||||
|
.env
|
||||||
|
|
||||||
|
|
||||||
|
# Soldeer
|
||||||
|
/dependencies
|
||||||
66
soldeer-package-manager/README.md
Normal file
66
soldeer-package-manager/README.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
## Foundry
|
||||||
|
|
||||||
|
**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
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ forge test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Format
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ forge fmt
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gas Snapshots
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ forge snapshot
|
||||||
|
```
|
||||||
|
|
||||||
|
### Anvil
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ anvil
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cast
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ cast <subcommand>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Help
|
||||||
|
|
||||||
|
```shell
|
||||||
|
$ forge --help
|
||||||
|
$ anvil --help
|
||||||
|
$ cast --help
|
||||||
|
```
|
||||||
19
soldeer-package-manager/foundry.toml
Normal file
19
soldeer-package-manager/foundry.toml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[profile.default]
|
||||||
|
src = "src"
|
||||||
|
out = "out"
|
||||||
|
libs = ["lib", "dependencies"]
|
||||||
|
remappings = [
|
||||||
|
"@openzeppelin-contracts/=dependencies/@openzeppelin-contracts-5.0.2/src/",
|
||||||
|
"forge-std/=dependencies/forge-std-1.9.5/src/",
|
||||||
|
]
|
||||||
|
|
||||||
|
[soldeer]
|
||||||
|
remappings_version = false
|
||||||
|
remappings_location = "config"
|
||||||
|
# recursive_deps = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
forge-std = "1.9.5"
|
||||||
|
"@openzeppelin-contracts" = "5.0.2"
|
||||||
|
|
||||||
|
# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options
|
||||||
19
soldeer-package-manager/script/Counter.s.sol
Normal file
19
soldeer-package-manager/script/Counter.s.sol
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity ^0.8.13;
|
||||||
|
|
||||||
|
import {Script, console} from "forge-std/Script.sol";
|
||||||
|
import {Counter} from "../src/Counter.sol";
|
||||||
|
|
||||||
|
contract CounterScript is Script {
|
||||||
|
Counter public counter;
|
||||||
|
|
||||||
|
function setUp() public {}
|
||||||
|
|
||||||
|
function run() public {
|
||||||
|
vm.startBroadcast();
|
||||||
|
|
||||||
|
counter = new Counter();
|
||||||
|
|
||||||
|
vm.stopBroadcast();
|
||||||
|
}
|
||||||
|
}
|
||||||
13
soldeer-package-manager/soldeer.lock
Normal file
13
soldeer-package-manager/soldeer.lock
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[[dependencies]]
|
||||||
|
name = "@openzeppelin-contracts"
|
||||||
|
version = "5.0.2"
|
||||||
|
url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/5_0_2_14-03-2024_06:11:59_contracts.zip"
|
||||||
|
checksum = "8bc4f0acc7c187771b878d46f7de4bfad1acad2eb5d096d9d05d34035853f5c3"
|
||||||
|
integrity = "55881f6114aa36158566ef52b486d9d96b217c3e47d0e24bbd4994a8cfb5ee7c"
|
||||||
|
|
||||||
|
[[dependencies]]
|
||||||
|
name = "forge-std"
|
||||||
|
version = "1.9.5"
|
||||||
|
url = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_9_5_21-12-2024_15:04:05_forge-std-1.9.zip"
|
||||||
|
checksum = "57ada736f383289db77fac4472d48f820e7c98172cf9b01681b0c37065ce043f"
|
||||||
|
integrity = "4753ffdfa0dde40878372b6a4d8e8fd1648b190b33996896c8b92f6f1680850f"
|
||||||
14
soldeer-package-manager/src/Counter.sol
Normal file
14
soldeer-package-manager/src/Counter.sol
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity ^0.8.13;
|
||||||
|
|
||||||
|
contract Counter {
|
||||||
|
uint256 public number;
|
||||||
|
|
||||||
|
function setNumber(uint256 newNumber) public {
|
||||||
|
number = newNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
function increment() public {
|
||||||
|
number++;
|
||||||
|
}
|
||||||
|
}
|
||||||
24
soldeer-package-manager/test/Counter.t.sol
Normal file
24
soldeer-package-manager/test/Counter.t.sol
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity ^0.8.13;
|
||||||
|
|
||||||
|
import {Test, console} from "forge-std/Test.sol";
|
||||||
|
import {Counter} from "../src/Counter.sol";
|
||||||
|
|
||||||
|
contract CounterTest is Test {
|
||||||
|
Counter public counter;
|
||||||
|
|
||||||
|
function setUp() public {
|
||||||
|
counter = new Counter();
|
||||||
|
counter.setNumber(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_Increment() public {
|
||||||
|
counter.increment();
|
||||||
|
assertEq(counter.number(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function testFuzz_SetNumber(uint256 x) public {
|
||||||
|
counter.setNumber(x);
|
||||||
|
assertEq(counter.number(), x);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user