Soloseng/ToB-audit-Insufficient-event-generation (#11285) #14614
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Protocol Foundry tests | |
on: | |
push: | |
branches: | |
- master | |
- 'release/**' | |
- 'feat/l2-epoch-system' | |
- 'martinvol/**' | |
- 'pahor167/**' | |
- 'soloseng/**' | |
pull_request: | |
branches: | |
- master | |
- 'release/**' | |
- 'feat/l2-epoch-system' | |
- 'martinvol/**' | |
- 'pahor167/**' | |
- 'soloseng/**' | |
env: | |
# Increment these to force cache rebuilding | |
FOUNDRY_CACHE_KEY: 2 | |
# Supported Foundry version defined at celo-org (GitHub organisation) level, for consistency across workflows. Please contact DevOps to update value. | |
SUPPORTED_FOUNDRY_VERSION: ${{ vars.SUPPORTED_FOUNDRY_VERSION }} | |
jobs: | |
check: | |
defaults: | |
run: | |
working-directory: packages/protocol | |
name: Run tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set Swap Space | |
uses: pierotofy/set-swap-space@49819abfb41bd9b44fb781159c033dba90353a7c | |
with: | |
swap-size-gb: 32 | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Fail if there are test with wrong extension | |
if: success() || failure() | |
run: | | |
if tree test-sol | grep -i ".sol" | grep -v ".sol"; then | |
echo "There are tests with wrong extensions" | |
tree test-sol | grep -i ".sol" | grep -v ".sol" | |
exit 1 | |
fi | |
- name: Foundry cache | |
id: foundry-cache | |
uses: actions/cache@v4 | |
with: | |
path: ./cache | |
key: ${{ runner.os }}-foundry-cache-${{ env.FOUNDRY_CACHE_KEY }} | |
- name: Foundry out | |
id: foundry-out | |
uses: actions/cache@v4 | |
with: | |
path: ./out | |
key: ${{ runner.os }}-foundry-out-${{ env.FOUNDRY_CACHE_KEY }} | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: 'nightly-fa0e0c2ca3ae75895dd19173a02faf88509c0608' # TODO: revert back to env var | |
- name: Install forge dependencies | |
run: forge install | |
# "Run tests" already tries to compile the contracts | |
# Making it explicit here to have easier to read errors | |
- name: Compile Contracts | |
run: forge --version && forge compile | |
- name: Run unit tests common | |
# can't use gas limit because some setUp function use more than the limit | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/common/*" | |
- name: Run unit tests governance/network | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/governance/network/*" \ | |
--block-gas-limit 50000000 | |
- name: Run unit tests governance/validators | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/governance/validators/*" \ | |
--block-gas-limit 50000000 | |
- name: Run unit tests governance/voting | |
# can't use gas limit because some setUp function use more than the limit | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/governance/voting/*" | |
- name: Run unit tests stability | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/stability/*" \ | |
--block-gas-limit 50000000 | |
- name: Run unit tests identity | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/identity/*" \ | |
--block-gas-limit 50000000 | |
- name: Fail if there are tests without folder | |
if: success() || failure() | |
run: | | |
if ls test-sol | grep -qi '\.t\.sol'; then | |
echo "All tests should be in a folder" | |
exit 1 | |
fi | |
- name: Run all unit tests in case some were missed (excl. integration and e2e tests) | |
# can't use gas limit because some setUp function use more than the limit | |
# Excludes e2e and integration tests, because they require a connection to an anvil devchain | |
# serving at localhost. | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/unit/*" | |
- name: Run integration tests (that don't require an anvil devchain) | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/integration/*" \ | |
- name: Generate migrations and run devchain | |
if: success() || failure() | |
run: ./scripts/foundry/create_and_migrate_anvil_devchain.sh | |
- name: Run migration tests against local anvil devchain | |
run: | | |
source ./scripts/foundry/constants.sh | |
FOUNDRY_PROFILE=devchain forge test -vvv \ | |
--match-path "test-sol/devchain/migration/*" \ | |
--fork-url $ANVIL_RPC_URL | |
- name: Run e2e tests against local anvil devchain | |
run: | | |
source ./scripts/foundry/constants.sh | |
FOUNDRY_PROFILE=devchain forge test -vvv \ | |
--match-path "test-sol/devchain/e2e/*" \ | |
--fork-url $ANVIL_RPC_URL |