-
Notifications
You must be signed in to change notification settings - Fork 43
138 lines (114 loc) · 4.48 KB
/
testing.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
name: Testing
on: [push]
jobs:
contract-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
# fix SSH error: [email protected]: Permission denied (publickey).
# copy from https://github.com/actions/setup-node/issues/214#issuecomment-810829250
- name: Reconfigure git to use HTTP authentication
run: >
git config --global url."https://github.com/".insteadOf
ssh://[email protected]/
- name: Get npm cache directory
id: npm-cache
run: |
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT
- uses: actions/cache@v2
with:
path: |
${{ steps.npm-cache.outputs.dir }}
**/node_modules
key: ${{ github.job }}-${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ github.job }}-${{ runner.os }}-node-
- name: Use Node.js 16.x
uses: actions/setup-node@v1
with:
node-version: 16.x
- name: Install contract package dependencies
run: npm ci
- name: Build contract package
run: npm run build
- name: Run contract tests
run: npm run test
env:
# to solve problem of memory leak https://stackoverflow.com/a/59572966
NODE_OPTIONS: "--max-old-space-size=8192"
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
# fix SSH error: [email protected]: Permission denied (publickey).
# copy from https://github.com/actions/setup-node/issues/214#issuecomment-810829250
- name: Reconfigure git to use HTTP authentication
run: >
git config --global url."https://github.com/".insteadOf
ssh://[email protected]/
- name: Get npm cache directory
id: npm-cache
run: |
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT
- uses: actions/cache@v2
with:
path: |
${{ steps.npm-cache.outputs.dir }}
**/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Use Node.js 16.x
uses: actions/setup-node@v1
with:
node-version: 16.x
- name: Install dependencies
run: npm ci
- name: Run lint
run: npm run lint
foundry-test:
name: Foundry Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
persist-credentials: false
- name: Get npm cache directory
id: npm-cache
run: |
echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT
- uses: actions/cache@v2
with:
path: |
${{ steps.npm-cache.outputs.dir }}
**/node_modules
key: ${{ github.job }}-${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ github.job }}-${{ runner.os }}-node-
- name: Use Node.js 16.x
uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Install contract package dependencies
run: npm ci
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Run Forge build
run: |
forge --version
forge build --sizes
- name: Build Uniswap in foundry for testing
run: npm run foundry-build-uniswap
- name: Run tests
env:
OPTIMISM_WEB3_ENDPOINT_ARCHIVE: ${{ vars.OPTIMISM_WEB3_ENDPOINT_ARCHIVE }} # For fork tests
run: npm run foundry-test
- name: Run snapshot
run: forge snapshot