diff --git a/.github/workflows/forge-test.yml b/.github/workflows/forge-test.yml new file mode 100644 index 00000000..fb0ba844 --- /dev/null +++ b/.github/workflows/forge-test.yml @@ -0,0 +1,58 @@ +name: PR Checks + +on: + pull_request: + branches: [ master ] + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Build and Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'yarn' + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Show Forge version + run: | + forge --version + + - name: Run Forge build + run: | + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test + + - name: Run coverage + run: | + forge coverage + id: coverage + + - name: Run snapshot + run: | + forge snapshot + id: snapshot diff --git a/.gitmodules b/.gitmodules index c59f396e..dbd0a97b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "lib/solmate"] path = lib/solmate url = https://github.com/transmissions11/solmate +[submodule "lib/solady"] + path = lib/solady + url = https://github.com/vectorized/solady diff --git a/lib/solady b/lib/solady new file mode 160000 index 00000000..6c2d0da6 --- /dev/null +++ b/lib/solady @@ -0,0 +1 @@ +Subproject commit 6c2d0da6397e3c016aabc3f298de1b92c6ce7405 diff --git a/script/PayFeesInArbitrumETH.s.sol b/script/PayFeesInArbitrumETH.s.sol index e7bcc760..70858dc5 100644 --- a/script/PayFeesInArbitrumETH.s.sol +++ b/script/PayFeesInArbitrumETH.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {Script} from "forge-std/Script.sol"; -import {console} from "forge-std/Console.sol"; +import {console} from "forge-std/console.sol"; import {FeesPlug} from "../contracts/apps/payload-delivery/FeesPlug.sol"; import {Fees} from "../contracts/common/Structs.sol"; import {ETH_ADDRESS} from "../contracts/common/Constants.sol"; diff --git a/script/counter/WithdrawFeesArbitrumFeesPlug.s.sol b/script/counter/WithdrawFeesArbitrumFeesPlug.s.sol index d9c49f1f..ff9af7bc 100644 --- a/script/counter/WithdrawFeesArbitrumFeesPlug.s.sol +++ b/script/counter/WithdrawFeesArbitrumFeesPlug.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {Script} from "forge-std/Script.sol"; -import {console} from "forge-std/Console.sol"; +import {console} from "forge-std/console.sol"; import {FeesPlug} from "../../contracts/apps/payload-delivery/FeesPlug.sol"; import {ETH_ADDRESS} from "../../contracts/common/Constants.sol"; import {CounterAppGateway} from "../../contracts/apps/counter/CounterAppGateway.sol"; diff --git a/script/super-token-lockable/DeployContracts.s.sol b/script/super-token-lockable/DeployContracts.s.sol index 9ab757b8..be463a84 100644 --- a/script/super-token-lockable/DeployContracts.s.sol +++ b/script/super-token-lockable/DeployContracts.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {Script} from "forge-std/Script.sol"; -import {console} from "forge-std/Console.sol"; +import {console} from "forge-std/console.sol"; import {SuperTokenLockableAppGateway} from "../../contracts/apps/super-token-lockable/SuperTokenLockableAppGateway.sol"; import {SuperTokenLockableDeployer} from "../../contracts/apps/super-token-lockable/SuperTokenLockableDeployer.sol"; import {SuperTokenLockable} from "../../contracts/apps/super-token-lockable/SuperTokenLockable.sol"; diff --git a/script/super-token-lockable/DeployGateway.s.sol b/script/super-token-lockable/DeployGateway.s.sol index 8389a937..8032264a 100644 --- a/script/super-token-lockable/DeployGateway.s.sol +++ b/script/super-token-lockable/DeployGateway.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {Script} from "forge-std/Script.sol"; -import {console} from "forge-std/Console.sol"; +import {console} from "forge-std/console.sol"; import {SuperTokenLockableAppGateway} from "../../contracts/apps/super-token-lockable/SuperTokenLockableAppGateway.sol"; import {SuperTokenLockableDeployer} from "../../contracts/apps/super-token-lockable/SuperTokenLockableDeployer.sol"; import {SuperTokenLockable} from "../../contracts/apps/super-token-lockable/SuperTokenLockable.sol"; diff --git a/script/super-token/DeployContracts.s.sol b/script/super-token/DeployContracts.s.sol index 79e37224..30ad5d88 100644 --- a/script/super-token/DeployContracts.s.sol +++ b/script/super-token/DeployContracts.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {Script} from "forge-std/Script.sol"; -import {console} from "forge-std/Console.sol"; +import {console} from "forge-std/console.sol"; import {SuperTokenAppGateway} from "../../contracts/apps/super-token/SuperTokenAppGateway.sol"; import {SuperTokenDeployer} from "../../contracts/apps/super-token/SuperTokenDeployer.sol"; import {SuperToken} from "../../contracts/apps/super-token/SuperToken.sol"; diff --git a/script/super-token/DeployGateway.s.sol b/script/super-token/DeployGateway.s.sol index 5f3fea2c..f57a841d 100644 --- a/script/super-token/DeployGateway.s.sol +++ b/script/super-token/DeployGateway.s.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import {Script} from "forge-std/Script.sol"; -import {console} from "forge-std/Console.sol"; +import {console} from "forge-std/console.sol"; import {SuperTokenAppGateway} from "../../contracts/apps/super-token/SuperTokenAppGateway.sol"; import {SuperTokenDeployer} from "../../contracts/apps/super-token/SuperTokenDeployer.sol"; import {SuperToken} from "../../contracts/apps/super-token/SuperToken.sol";