-
Notifications
You must be signed in to change notification settings - Fork 70
136 lines (118 loc) · 3.79 KB
/
python-tests.yml
File metadata and controls
136 lines (118 loc) · 3.79 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
134
135
136
name: Python tests
on:
push:
branches: [master]
pull_request_target:
jobs:
get-fixtures:
runs-on: ubuntu-latest
steps:
- name: Get fixtures
uses: actions/checkout@v6
with:
submodules: recursive
ssh-key: ${{ secrets.PSPTOOL_FIXTURES_NEW_PRIVATE_KEY }}
- name: Save fixtures
uses: actions/upload-artifact@v7
with:
name: saved-fixtures
path: tests/integration/fixtures
retention-days: 1
test:
needs: get-fixtures
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout PR
uses: actions/checkout@v6
with:
ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.sha }}
- name: Download fixtures
uses: actions/download-artifact@v8
with:
name: saved-fixtures
path: tests/integration/fixtures
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8
pip install psptrace # for integration tests
pip install .
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with unittest
run: |
python -m unittest discover -s tests -v
create-metrics:
runs-on: ubuntu-latest
needs: get-fixtures
permissions:
contents: read
steps:
- name: Checkout PR
uses: actions/checkout@v6
with:
ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.sha }}
- name: Download fixtures
uses: actions/download-artifact@v8
with:
name: saved-fixtures
path: tests/integration/fixtures
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.14"
cache: 'pip'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .
- name: Create Metrics
run: |
python tests/gha_metrics.py > metrics.md
cat metrics.md >> $GITHUB_STEP_SUMMARY
- name: Upload metrics
if: github.event_name == 'pull_request_target'
uses: actions/upload-artifact@v7
with:
name: metrics-data
path: metrics.md
comment-metrics:
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-latest
needs: create-metrics
permissions:
pull-requests: write
actions: read
steps:
- name: Download metrics
uses: actions/download-artifact@v8
with:
name: metrics-data
- name: find comment
uses: peter-evans/find-comment@v4
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: '<!-- PSPTOOL-METRICS-MARKER -->'
- name: create or update comment
uses: peter-evans/create-or-update-comment@v5
with:
comment-id: ${{ steps.fc.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body-path: metrics.md
edit-mode: replace