Skip to content

Commit a5b22b9

Browse files
removed some lines
1 parent 0036656 commit a5b22b9

File tree

1 file changed

+172
-0
lines changed

1 file changed

+172
-0
lines changed

.github/workflows/medusa.yml

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
name: Run Medusa tests
2+
3+
on:
4+
push:
5+
paths:
6+
- ".github/workflows/medusa.yml"
7+
- "program-analysis/echidna/**/*.sol"
8+
- "program-analysis/echidna/**/*.yml"
9+
branches:
10+
- master
11+
pull_request:
12+
paths:
13+
- ".github/workflows/medusa.yml"
14+
- "program-analysis/echidna/**/*.sol"
15+
- "program-analysis/echidna/**/*.yml"
16+
schedule:
17+
# run CI every day even if no PRs/merges occur
18+
- cron: "0 12 * * *"
19+
20+
jobs:
21+
tests:
22+
name: ${{ matrix.name }}
23+
continue-on-error: ${{ matrix.flaky == true }}
24+
runs-on: ubuntu-22.04
25+
strategy:
26+
fail-fast: false
27+
matrix:
28+
include:
29+
- name: Exercise 1
30+
workdir: program-analysis/echidna/exercises/exercise1/
31+
files: solution.sol
32+
contract: TestToken
33+
outcome: failure
34+
expected: 'echidna_test_balance:\s*failed'
35+
- name: Exercise 2
36+
workdir: program-analysis/echidna/exercises/exercise2/
37+
files: solution.sol
38+
contract: TestToken
39+
outcome: failure
40+
expected: 'echidna_no_transfer:\s*failed'
41+
- name: Exercise 3
42+
workdir: program-analysis/echidna/exercises/exercise3/
43+
files: solution.sol
44+
contract: TestToken
45+
outcome: failure
46+
expected: 'echidna_test_balance:\s*failed'
47+
- name: Exercise 4
48+
workdir: program-analysis/echidna/exercises/exercise4/
49+
files: solution.sol
50+
config: config.yaml
51+
contract: TestToken
52+
outcome: failure
53+
expected: 'transfer(address,uint256):\s*failed'
54+
- name: Exercise 5
55+
workdir: dvdefi/
56+
files: .
57+
config: naivereceiver.yaml
58+
crytic-args: --hardhat-ignore-compile
59+
contract: NaiveReceiverEchidna
60+
outcome: failure
61+
expected: 'echidna_test_contract_balance:\s*failed'
62+
- name: Exercise 6
63+
workdir: dvdefi/
64+
files: .
65+
config: unstoppable.yaml
66+
crytic-args: --hardhat-ignore-compile
67+
contract: UnstoppableEchidna
68+
outcome: failure
69+
expected: 'echidna_testFlashLoan:\s*failed'
70+
- name: Exercise 7
71+
workdir: dvdefi/
72+
files: .
73+
config: sideentrance.yaml
74+
crytic-args: --hardhat-ignore-compile
75+
contract: SideEntranceEchidna
76+
outcome: failure
77+
expected: 'testPoolBalance():\s*failed'
78+
- name: TestToken
79+
workdir: program-analysis/echidna/example/
80+
files: testtoken.sol
81+
contract: TestToken
82+
outcome: failure
83+
expected: 'echidna_balance_under_1000:\s*failed'
84+
- name: Multi
85+
workdir: program-analysis/echidna/example/
86+
files: multi.sol
87+
config: filter.yaml
88+
outcome: failure
89+
expected: 'echidna_state4:\s*failed'
90+
- name: Assert
91+
workdir: program-analysis/echidna/example/
92+
files: assert.sol
93+
config: assert.yaml
94+
outcome: failure
95+
expected: 'inc(uint256):\s*failed'
96+
- name: PopsicleBroken
97+
workdir: program-analysis/echidna/example/
98+
files: PopsicleBroken.sol
99+
solc-version: 0.8.4
100+
config: Popsicle.yaml
101+
contract: PopsicleBroken
102+
outcome: failure
103+
expected: 'totalBalanceAfterTransferIsPreserved(address,uint256):\s*failed'
104+
- name: PopsicleFixed
105+
workdir: program-analysis/echidna/example/
106+
files: PopsicleFixed.sol
107+
solc-version: 0.8.4
108+
config: Popsicle.yaml
109+
contract: PopsicleFixed
110+
outcome: success
111+
expected: 'totalBalanceAfterTransferIsPreserved(address,uint256):\s*passing'
112+
- name: TestDepositWithPermit
113+
workdir: program-analysis/echidna/example/
114+
files: TestDepositWithPermit.sol
115+
solc-version: 0.8.0
116+
config: testdeposit.yaml
117+
contract: TestDepositWithPermit
118+
outcome: success
119+
expected: 'testERC20PermitDeposit(uint256):\s*passing'
120+
- name: MultiABI
121+
workdir: program-analysis/echidna/example/
122+
files: allContracts.sol
123+
solc-version: 0.8.0
124+
config: allContracts.yaml
125+
contract: EchidnaTest
126+
outcome: failure
127+
expected: 'test_flag_is_false():\s*failed'
128+
129+
steps:
130+
- name: Checkout repository
131+
uses: actions/checkout@v4
132+
133+
- name: Checkout Damn Vulnerable DeFi solutions
134+
uses: actions/checkout@v4
135+
if: startsWith(matrix.workdir, 'dvdefi')
136+
with:
137+
repository: crytic/damn-vulnerable-defi-echidna
138+
ref: solutions
139+
path: ${{ matrix.workdir }}
140+
141+
- name: Set up Nodejs
142+
uses: actions/setup-node@v3
143+
if: startsWith(matrix.workdir, 'dvdefi')
144+
with:
145+
node-version: 16
146+
147+
- name: Install dependencies and compile
148+
if: startsWith(matrix.workdir, 'dvdefi')
149+
run: |
150+
yarn install --frozen-lockfile
151+
npx hardhat compile --force
152+
working-directory: ${{ matrix.workdir }}
153+
154+
- name: Go setup
155+
uses: actions/setup-go@v4
156+
with:
157+
go-version: "^1.18.1"
158+
159+
- name: Install medusa
160+
run: |
161+
git clone https://github.com/crytic/medusa.git
162+
cd medusa
163+
go build -o medusa -v .
164+
go install -v .
165+
sudo cp medusa /usr/bin
166+
pip install crytic-compile
167+
168+
- name: Run Medusa for Internal ERC20 tests
169+
continue-on-error: true
170+
working-directory: ${{ matrix.workdir }}
171+
run: |
172+
medusa fuzz --compilation-target ${{ matrix.files }} --target-contracts ${{ matrix.contract }}

0 commit comments

Comments
 (0)