-
-
Notifications
You must be signed in to change notification settings - Fork 84
140 lines (115 loc) · 4.06 KB
/
Copy pathtest-contracts.yml
File metadata and controls
140 lines (115 loc) · 4.06 KB
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
name: 🕵️♂️ Test smart contracts
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: "30 3 * * *"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: {}
jobs:
tests:
runs-on: ${{ matrix.os }}
timeout-minutes: 60
permissions:
contents: read
strategy:
matrix:
os:
- ubuntu-latest
python_version:
- 3.14
architecture:
- x64
node_version:
- 26
echidna:
- "--config test/echidna.yaml"
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: recursive
persist-credentials: false
- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ matrix.python_version }}
architecture: ${{ matrix.architecture }}
- name: Install Vyper
run: python -m pip install git+https://github.com/vyperlang/vyper.git@master
- name: Show the Vyper version
run: vyper --version
- name: Setup Ape
uses: ApeWorX/github-action@e375cf9d3697af2e21f6ddc5dfab209789b3054e # v3.7.0
with:
python-version: ${{ matrix.python_version }}
- name: Check Ape compilation
run: ape compile
- name: Install pnpm
uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10
with:
cache: true
run_install: |
- args: [--prefer-offline, --frozen-lockfile]
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: ${{ matrix.node_version }}
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@908c540300062bd5a7e473851cdb4282204cee09 # v1.9.1
with:
version: nightly
- name: Show the Foundry CI config
run: forge config
env:
FOUNDRY_PROFILE: ci
FOUNDRY_DISABLE_NIGHTLY_WARNING: "1"
- name: Foundry tests
run: forge test
env:
FOUNDRY_PROFILE: ci
FOUNDRY_DISABLE_NIGHTLY_WARNING: "1"
- name: Show the Foundry default config
run: forge config
env:
FOUNDRY_PROFILE: default
FOUNDRY_DISABLE_NIGHTLY_WARNING: "1"
- name: Run snapshot
run: NO_COLOR=1 forge snapshot >> $GITHUB_STEP_SUMMARY
env:
FOUNDRY_PROFILE: default
FOUNDRY_DISABLE_NIGHTLY_WARNING: "1"
- name: Install Slither
run: python -m pip install slither-analyzer==0.11.5
- name: Show the Slither version
run: slither --version
- name: Install Echidna
run: |
set -Eeuo pipefail
wget -q https://github.com/crytic/echidna/releases/download/v2.3.2/echidna-2.3.2-x86_64-linux.tar.gz
echo "38e4eb12627d8dea2a9eabfaebbcdb4d9ad0bde633aafbcae4d69656d6bcdb4a echidna-2.3.2-x86_64-linux.tar.gz" | sha256sum -c -
sudo tar -xzf echidna-2.3.2-x86_64-linux.tar.gz -C /usr/local/bin
rm echidna-2.3.2-x86_64-linux.tar.gz
- name: Show the Echidna version
run: echidna --version
- name: Show the Foundry Echidna config
run: forge config
env:
FOUNDRY_PROFILE: echidna
FOUNDRY_DISABLE_NIGHTLY_WARNING: "1"
- name: Compile the Echidna test contracts
run: forge build --build-info
env:
FOUNDRY_PROFILE: echidna
FOUNDRY_DISABLE_NIGHTLY_WARNING: "1"
- name: Run Echidna ERC-20 property tests
run: echidna test/tokens/echidna/ERC20Properties.sol --contract CryticERC20ExternalHarness ${{ matrix.echidna }}
env:
FOUNDRY_PROFILE: echidna
- name: Run Echidna ERC-721 property tests
run: echidna test/tokens/echidna/ERC721Properties.sol --contract CryticERC721ExternalHarness ${{ matrix.echidna }}
env:
FOUNDRY_PROFILE: echidna