-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (135 loc) · 3.98 KB
/
tests.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
# This workflow will install Python dependencies,
# run tests and lint with a variety of Python versions
---
name: Tests
on: [push, pull_request]
jobs:
cpython:
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
- '3.14-dev'
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
uv sync --extra tests
- name: Test with pytest
run: |
uv run pytest tests --cov=tests --cov=vercheck --cov-report=xml
- name: "Upload coverage to Codecov"
if: ${{ matrix.python-version==3.12 }}
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
static-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: "pyproject.toml"
- name: Install dependencies
run: |
uv sync --all-extras
- name: Typecheck
run: |
uv run mypy src/vercheck tests
- name: Linting
run: |
uv run flake8 src/vercheck tests --max-line-length=88
uv run ruff check --no-fix src/vercheck tests
uv run ruff format --check src/vercheck tests
uv run yamllint .github/workflows/
- name: Check complexity
run: |
uv run radon cc --min B src/vercheck
uv run radon mi --min B src/vercheck
uv run lizard -l python -w src/vercheck
build-package:
name: Build & inspect our package.
runs-on: ubuntu-latest
needs: [cpython, static-tests]
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- uses: hynek/build-and-inspect-python-package@v2
- uses: actions/setup-python@v5
with:
python-version-file: "pyproject.toml"
- name: Install dependencies
run: |
uv sync --extra build
- name: Check with pyroma
run: |
uv run pyroma .
- name: Check tag name
if: >-
github.event_name == 'push' &&
startsWith(github.ref, 'refs/tags')
run: |
uv run vercheck $GITHUB_REF_NAME src/vercheck/about.py
test-publish:
if: >-
github.event_name == 'push' &&
github.repository == 'cleder/vercheck' &&
startsWith(github.ref, 'refs/tags')
needs: build-package
name: Test install on TestPyPI
runs-on: ubuntu-latest
environment: test-release
permissions:
id-token: write
steps:
- name: Download packages built by build-package
uses: actions/download-artifact@v4
with:
name: Packages
path: dist
- name: Upload package to Test PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
publish:
if: >-
github.event_name == 'push' &&
github.repository == 'cleder/vercheck' &&
github.ref == 'refs/heads/main'
needs: build-package
name: Build and publish to PyPI and TestPyPI
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
steps:
- name: Download packages built by build-package
uses: actions/download-artifact@v4
with:
name: Packages
path: dist
- name: Publish distribution 📦 to PyPI for push to main
uses: pypa/gh-action-pypi-publish@release/v1
...