-
Notifications
You must be signed in to change notification settings - Fork 58
148 lines (137 loc) · 4.68 KB
/
ci.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
143
144
145
146
147
148
name: CI
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
jobs:
test:
strategy:
matrix:
os: [ubuntu-22.04, macos-12, windows-2022]
name: Test on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.8"
- run: pip install .[testing]
name: Install
- run: pytest --durations 10
name: Run pytest
docs:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Install
run: pip install .[docs]
- name: Build docs
run: cd docs && make html
- name: Build coverage
run: cd docs && make coverage
- name: Test coverage
run: |
if [ -s docs/_build/coverage/python.txt ]; then
echo "Doc coverage is missing for the for:"
cat docs/_build/coverage/python.txt
exit 1
fi
test-ecosystem:
strategy:
fail-fast: false
matrix:
group: [1, 2, 3, 4, 5]
name: Test Ecosystem
runs-on: ubuntu-20.04
steps:
- run: sudo apt update; sudo apt install -y libegl1
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: 3.8
- uses: actions/checkout@v3
with:
fetch-depth: 0
path: archinfo
- run: git -C archinfo checkout master # FIXME: temporary workaround for == versions
- run: pip install ./archinfo
# Checkout and install all the ecosystem packages
# Core packages
# pyvex
- run: git clone --recursive https://github.com/angr/pyvex.git
- run: pip install ./pyvex
# cle
- run: git clone https://github.com/angr/cle.git
- run: pip install ./cle
# TODO: remove this once angr installs claripy directly
- run: git clone https://github.com/angr/claripy.git
- run: pip install ./claripy
# TODO: remove this once angr installs ailment directly
- run: git clone https://github.com/angr/ailment.git
- run: pip install ./ailment
# angr
- run: git clone https://github.com/angr/angr.git
- run: sed -i 's/pyvex[^"]*/pyvex/g' angr/pyproject.toml # FIXME: temporary workaround for == versions
- run: pip install ./angr
# angr management
- run: git clone https://github.com/angr/angr-management.git
- run: pip install ./angr-management
# binaries
- run: git clone https://github.com/angr/binaries.git
# Extended packages
# angr-platforms
- run: git clone https://github.com/angr/angr-platforms.git
- run: pip install ./angr-platforms
# pysoot
- run: git clone https://github.com/angr/pysoot.git -b set-heap-from-env
- run: pip install -e ./pysoot # Regular install doesn't work... see angr/pysoot#12
# archr, dep of rex
- run: git clone https://github.com/angr/archr.git
- run: pip install ./archr
# angrop
- run: git clone https://github.com/angr/angrop.git
- run: pip install ./angrop
# tracer, dep of rex
- run: git clone https://github.com/angr/tracer.git
- run: pip install ./tracer
# compilerex, patcherex
- run: git clone https://github.com/mechaphish/compilerex.git
- run: pip install ./compilerex
# povsim, dep of rex
- run: git clone https://github.com/mechaphish/povsim.git
- run: pip install ./povsim
# rex
- run: git clone https://github.com/angr/rex.git
- run: pip install ./rex
# colorguard, test dep of rex
- run: git clone https://github.com/mechaphish/colorguard.git
- run: pip install ./colorguard
# driller
- run: git clone https://github.com/shellphish/driller.git
- run: pip install ./driller
# heaphopper
- run: git clone https://github.com/angr/heaphopper.git
- run: pip install ./heaphopper
# patcherex
- run: git clone https://github.com/angr/patcherex.git
- run: pip install ./patcherex
# Reinstall archinfo in case it was overwritten by one of the ecosystem packages
- run: git -C archinfo checkout -
- run: pip install ./archinfo[testing]
- run: ls
- name: Run pytest
run: |
ulimit -v 6291456
pytest -rfEs -n auto --durations 10 --splits 5 --group ${{matrix.group}} cle angr
# angr-platforms pysoot angrop rex driller heaphopper patcherex
echo "Return code: $?"
env:
SKIP_SLOW_TESTS: 1
PYSOOT_HEAP_SIZE: 2G