-
-
Notifications
You must be signed in to change notification settings - Fork 37
141 lines (114 loc) · 3.07 KB
/
lint_test_coverage.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
name: lint-test-coverage
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
workflow_dispatch:
jobs:
lint:
runs-on: ubuntu-24.04
strategy:
matrix:
python-version: ["3.12"]
steps:
- name: checkout-code
uses: actions/checkout@v4
- name: prepare-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: install-poetry
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: install-dependencies
run: |
poetry install
- name: check-fmt
run: |
make check-fmt
- name: lint-code
run: |
make flake
make lint
- name: semgrep
run: |
make semgrep
mypy:
needs: lint
runs-on: ubuntu-24.04
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- name: checkout-code
uses: actions/checkout@v4
- name: prepare-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: install-poetry
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: install-dependencies
run: |
poetry install
- name: mypy checks
run: |
make mypy
test:
needs: [lint, mypy]
runs-on: ubuntu-24.04
env:
PYTHONHASHSEED: 0
USING_COVERAGE: '3.12'
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "pypy-3.10"]
steps:
- name: checkout-code
uses: actions/checkout@v4
- name: prepare-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
# Normal Python
- name: install-poetry
if: "!contains(matrix.python-version, 'pypy-3.10')"
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: install-dependencies
if: "!contains(matrix.python-version, 'pypy-3.10')"
run: |
poetry install
- name: run-tests
if: "!contains(matrix.python-version, 'pypy-3.10')"
run: |
make test
# PyPy
- name: install-dependencies
if: "contains(matrix.python-version, 'pypy-3.10')"
run: |
pip install termcolor==2.3.0 pytest==8.1.2 pytest-xdist==3.6.1
- name: run-tests
if: "contains(matrix.python-version, 'pypy-3.10')"
run: |
py.test -n auto -v
# Coverage
- name: create-coverage-report
if: "contains(env.USING_COVERAGE, matrix.python-version)"
run: |
make coverage
- name: submit-to-codecov-io
if: "contains(env.USING_COVERAGE, matrix.python-version)"
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}