-
Notifications
You must be signed in to change notification settings - Fork 2
132 lines (113 loc) · 4.1 KB
/
python-tests.yml
File metadata and controls
132 lines (113 loc) · 4.1 KB
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
name: "python tests and coverage"
# Uses:
# https://github.com/actions/setup-python : 0b93645e9fea7318ecaed2b359559ac225c90a2b
# https://github.com/actions/checkout : 11bd71901bbe5b1630ceea73d27597364c9af683
# https://github.com/actions/download-artifact : fa0a91b85d4f404e444e00e005971372dc801d16
# https://github.com/actions/upload-artifact : 6f51ac03b9356f520e9adb1b1b7802705f340c2b
# https://github.com/astral-sh/setup-uv : 1edb52594c857e2b5b13128931090f0640537287
on:
pull_request:
branches:
- "main"
push:
branches:
- "main"
env:
UV_PYTHON_PREFERENCE: "only-system"
UV_LOCKED: "true"
jobs:
run-tests-and-coverage:
name: "Run nox for tests and coverage"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os:
- "macos-latest"
- "windows-latest"
- "ubuntu-latest"
python-version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
steps:
- name: "Repo checkout"
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
- name: "Set up Python ${{ matrix.python-version }}"
uses: "actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b"
with:
python-version: "${{ matrix.python-version }}"
allow-prereleases: true
- name: "Install the latest version of uv"
uses: "astral-sh/setup-uv@1edb52594c857e2b5b13128931090f0640537287"
with:
version: "latest"
python-version: "${{ matrix.python-version }}"
enable-cache: true
- name: "Run tests and coverage via nox"
run: |
uv run nox --session version_coverage-${{ matrix.python-version }}
- name: "Save coverage artifact"
uses: "actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b"
with:
name: "coverage-artifact-${{ matrix.os}}-${{ matrix.python-version}}"
path: ".coverage.*"
retention-days: 1
include-hidden-files: true
coverage-compile:
name: "coverage compile"
needs: "run-tests-and-coverage"
runs-on: "ubuntu-latest"
steps:
- name: "Repo checkout"
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
- name: "Set up Python"
uses: "actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b"
with:
python-version: "3.12"
- name: "Install the latest version of uv"
uses: "astral-sh/setup-uv@1edb52594c857e2b5b13128931090f0640537287"
with:
version: "latest"
python-version: "3.12"
enable-cache: true
- name: "Download coverage artifacts"
uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16"
with:
pattern: "coverage-artifact-*"
merge-multiple: true
# - name: "Compile coverage data"
# run: |
# uv run nox --session coverage_combine
- name: "Compile coverage data"
run: |
uv sync --no-dev --group test
uv run coverage combine --debug=pathmap
uv run coverage report -m
uv run coverage json
- name: "Post summary to step summary."
run: |
export TOTAL=$(python -c "import json;print(json.load(open('coverage.json'))['totals']['percent_covered_display'])")
echo "TOTAL=$TOTAL" >> $GITHUB_ENV
echo "### Total coverage: ${TOTAL}%" >> $GITHUB_STEP_SUMMARY
mypy-check:
name: "mypy strict enforcement"
runs-on: "ubuntu-latest"
steps:
- name: "Repo checkout"
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
- name: "Set up Python"
uses: "actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b"
with:
python-version: "3.12"
- name: "Install the latest version of uv"
uses: "astral-sh/setup-uv@1edb52594c857e2b5b13128931090f0640537287"
with:
version: "latest"
python-version: "3.12"
enable-cache: true
- name: "Enforce strict type annotations with mypy"
run: |
uv run nox --session mypy