-
Notifications
You must be signed in to change notification settings - Fork 376
142 lines (125 loc) · 4.36 KB
/
protocol_tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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 }}