Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: foundry and devcontainer #111

Merged
merged 14 commits into from
Jun 4, 2024
15 changes: 15 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "Foundry + Node",
"image": "mcr.microsoft.com/devcontainers/base:0",
"features": {
"ghcr.io/nlordell/features/foundry": {},
"ghcr.io/devcontainers/features/node:1": {}
},
"customizations": {
"vscode" : {
"extensions": [
"JuanBlanco.solidity"
]
}
}
}
1 change: 1 addition & 0 deletions .gas-snapshot
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TestNoOp:test_noOp() (gas: 122)
53 changes: 53 additions & 0 deletions .github/workflows/gas.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Gas

on:
pull_request:
paths:
- '**.sol'
- '**.yml'
- '**.toml'
- 'lib/**'
- '.gitmodules'
- '.gas-snapshot'
push:
branches:
- main
paths:
- '**.sol'
- '**.yml'
- '**.toml'
- 'lib/**'
- '.gitmodules'
- '.gas-snapshot'

env:
FOUNDRY_PROFILE: ci

jobs:
gas:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-node@v4
- id: yarn-cache
run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v4
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
yarn-
- run: yarn --frozen-lockfile

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Check gas snapshots
run: forge snapshot --check
# TODO: remove failure allowance once foundry migration is complete
continue-on-error: true
62 changes: 62 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Test

on:
workflow_dispatch:
pull_request:
paths:
- '**.sol'
- '**.yml'
- '**.toml'
- 'lib/**'
- '.gitmodules'
push:
branches:
- main
paths:
- '**.sol'
- '**.yml'
- '**.toml'
- 'lib/**'
- '.gitmodules'

env:
FOUNDRY_PROFILE: ci

jobs:
test:
strategy:
fail-fast: true

name: Foundry project
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-node@v4
- id: yarn-cache
run: echo "dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v4
with:
path: ${{ steps.yarn-cache.outputs.dir }}
key: yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
yarn-
- run: yarn --frozen-lockfile

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Run Forge build
run: |
forge --version
forge build --sizes
id: build

- name: Run Forge tests
run: |
forge test -vvv
id: test
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,15 @@ yarn-error.log
*.tgz
state.json
.mocharc.json

# Compiler files
cache/
out/

# Ignores development broadcast logs
!/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/

# Dotenv file
.env
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "lib/forge-std"]
path = lib/forge-std
url = https://github.com/foundry-rs/forge-std
7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"solidity.packageDefaultDependenciesDirectory": ["node_modules", "lib"],
"[solidity]": {
"editor.defaultFormatter": "JuanBlanco.solidity"
},
"solidity.compileUsingRemoteVersion": "v0.7.6+commit.7338295f",
}
10 changes: 10 additions & 0 deletions foundry.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[profile.default]
src = "src"
out = "out"
libs = ["node_modules", "lib"]

# Compiler settings
solc = "0.7.6"
via_ir = false
optimizer = true
optimizer_runs = 1000000
1 change: 1 addition & 0 deletions lib/forge-std
Submodule forge-std added at 978ac6
7 changes: 7 additions & 0 deletions test/TestNoOp.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.7.6;

/// @dev No-op contract for start of forgifying contracts. Delete this!
contract TestNoOp {
function test_noOp() external pure {}
}
Loading