-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (130 loc) · 4.13 KB
/
test.yml
File metadata and controls
133 lines (130 loc) · 4.13 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
133
name: Test
on:
push:
branches:
- main
paths:
- '**.py'
pull_request:
types:
- opened
- synchronize
paths:
- '**.py'
schedule:
# cron every week on monday
- cron: "0 0 * * 1"
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- "3.13"
- "3.12"
- "3.11"
- "3.10"
- "3.9"
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- name: Secrets -> env
uses: oNaiPs/secrets-to-env-action@v1
with:
secrets: ${{ toJSON(secrets) }}
#----------------------------------------------
# ----- Checkout -----
#----------------------------------------------
- uses: actions/checkout@v4
#----------------------------------------------
# ----- install & configure uv -----
#----------------------------------------------
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ matrix.python-version }}
#----------------------------------------------
# load cached venv if cache exists
#----------------------------------------------
- name: Load cached venv
id: cached-uv-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
#----------------------------------------------
# install dependencies if cache does not exist
#----------------------------------------------
- name: Install dependencies
if: steps.cached-uv-dependencies.outputs.cache-hit != 'true'
run: uv sync --no-dev --no-group=docs
#----------------------------------------------
# add keys to files
#----------------------------------------------
- name: Add keys to files
run: |
echo "${{ secrets.AZERICARD_KEY }}" > "${{ secrets.AZERICARD_KEY_FILE_PATH }}"
chmod 600 "${{ secrets.AZERICARD_KEY_FILE_PATH }}" # Ensure the file is only readable by the owner
#----------------------------------------------
# run test suite
#----------------------------------------------
- run: mkdir coverage
- name: Run tests
run: |
make test
env:
COVERAGE_FILE: coverage/.coverage.py${{ matrix.python-version }}
CONTEXT: py${{ matrix.python-version }}
- name: Store coverage files
uses: actions/upload-artifact@v4
with:
name: coverage-py${{ matrix.python-version }}
path: coverage
include-hidden-files: true
coverage-combine:
needs: [test]
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v4
#----------------------------------------------
# ----- install & configure uv -----
#----------------------------------------------
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
python-version: '3.9'
#----------------------------------------------
# load cached venv if cache exists
#----------------------------------------------
- name: Load cached venv
id: cached-uv-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-3.9-${{ hashFiles('pyproject.toml') }}
#----------------------------------------------
- name: Get coverage files
uses: actions/download-artifact@v4
with:
pattern: coverage-*
path: coverage
merge-multiple: true
- run: ls -la coverage
- run: make coverage title=${{ github.sha }}
- name: Store coverage HTML
uses: actions/upload-artifact@v4
with:
name: coverage-html
path: htmlcov
include-hidden-files: true