-
Notifications
You must be signed in to change notification settings - Fork 2
155 lines (124 loc) · 3.57 KB
/
test.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
149
150
151
152
153
154
155
name: Test
on:
# TODO: Since we install latest JACK, it would be nice to run build every day
push:
branches:
- main
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cache/pre-commit
~/.cache/pip
key: lint-${{ hashFiles('.pre-commit-config.yaml') }}
- name: Install pre-commit
run: pip install -U pre-commit
- name: Lint
run: pre-commit run --color=always --all-files
typing:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cache/pip
~/.cache/pypoetry
key: typing-${{ hashFiles('pyproject.toml') }}
- name: Setup Node
uses: actions/setup-node@v3
- name: Install Poetry
run: |
pip install -U poetry
poetry config virtualenvs.create false
- name: Install package
run: poetry install
- name: Install Pyright
run: npm install -g --no-package-lock --no-save pyright
- name: Check types
run: pyright
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
env:
LD_LIBRARY_PATH: /usr/local/lib
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Cache
uses: actions/cache@v3
with:
path: |
~/.cache/pip
~/.cache/pypoetry
key: test-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
- name: Install JACK
run: |
git clone https://github.com/jackaudio/jack2 /tmp/jack2
cd /tmp/jack2
./waf configure --prefix=/usr/local
sudo ./waf install
- name: Install Poetry
run: pip install -U poetry
- name: Install package
run: poetry install
- name: Test
run: |
poetry run pytest --color=yes --cov
mv .coverage ".coverage.${{ matrix.python-version }}"
- name: Upload coverage data
uses: actions/upload-artifact@v3
with:
name: coverage-data
path: .coverage.*
if-no-files-found: ignore
coverage: # https://hynek.me/articles/ditch-codecov-python/
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Install Coverage
run: pip install -U coverage[toml]
- name: Download data
uses: actions/download-artifact@v3
with:
name: coverage-data
- name: Combine coverage & fail if it's <100%
run: |
python -m coverage combine
python -m coverage html --skip-covered --skip-empty
python -m coverage report --fail-under=100
- name: Upload HTML report
uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: html-report
path: htmlcov