This repository was archived by the owner on Oct 3, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
138 lines (112 loc) · 3.19 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
name: Test
on:
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@v5
with:
python-version: 3.12
- name: Cache
uses: actions/cache@v4
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@v5
with:
python-version: 3.12
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cache/pip
~/.cache/pypoetry
key: typing-${{ hashFiles('pyproject.toml') }}
- name: Install Poetry
run: |
pip install -U poetry
poetry config virtualenvs.create false
- name: Install package
run: poetry install --extras all
- name: Check types
run: poetry run pyright
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cache/pip
~/.cache/pypoetry
key: test-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
- name: Install Poetry
run: pip install -U poetry
- name: Install package
run: poetry install --extras all
- name: Test
run: |
poetry run pytest --color=yes --cov
mv .coverage ".coverage.${{ matrix.python-version }}"
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: coverage-data-${{ matrix.python-version }}
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@v5
with:
python-version: 3.12
- name: Install Coverage
run: pip install -U coverage[toml]
- name: Download data
uses: actions/download-artifact@v4
with:
pattern: coverage-data-*
merge-multiple: true
- 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@v4
if: ${{ failure() }}
with:
name: html-report
path: htmlcov