chore(deps): update actions/upload-artifact digest to ff15f03 #14627
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 | |
pull_request: | |
branches: | |
- master | |
- 'release/**' | |
env: | |
# Increment these to force cache rebuilding | |
FOUNDRY_CACHE_KEY: 2 | |
ANVIL_PORT: 8546 | |
permissions: | |
contents: read | |
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-f625d0fa7c51e65b4bf1e8f7931cd1c6e2e285e9" | |
- 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/*" \ | |
--block-gas-limit 50000000 | |
- 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: Generate migrations and run devchain | |
if: success() || failure() | |
run: ./scripts/foundry/create_and_migrate_anvil_devchain.sh | |
- name: Run integration tests against local anvil devchain | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/integration/*" \ | |
--fork-url http://127.0.0.1:${{ env.ANVIL_PORT }} | |
- name: Run e2e tests against local anvil devchain | |
if: success() || failure() | |
run: | | |
forge test -vvv \ | |
--match-path "test-sol/e2e/*" \ | |
--fork-url http://127.0.0.1:${{ env.ANVIL_PORT }} |