-
Notifications
You must be signed in to change notification settings - Fork 32
141 lines (121 loc) · 3.87 KB
/
test.yml
File metadata and controls
141 lines (121 loc) · 3.87 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
137
138
139
140
141
name: test
on:
push:
branches-ignore: [release-test-*]
pull_request:
branches: [master]
workflow_call:
inputs:
release-artifact-id:
required: false
type: string
default: ''
description: The artifact-id to run the tests against.
disable-format-check:
type: string
default: ''
description: Disable ruff linting and ruff check if it is a non empty value
jobs:
test:
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.11', '3.12', '3.13']
deps: [newest-deps]
experimental: [false]
include:
- os: ubuntu-latest
python-version: '3.14-dev'
deps: newest-deps
experimental: true
- os: ubuntu-latest
python-version: '3.13'
deps: minimal-deps
experimental: false
- os: macos-latest
python-version: '3.13'
deps: newest-deps
experimental: true
fail-fast: false
steps:
- name: Bash version
run: bash --version
- name: Checkout code
uses: pkgcore/gh-actions/get-source@main
with:
artifact-id: ${{ inputs.release-artifact-id }}
- name: Install bash 5.3
uses: pkgcore/gh-actions/bash-5.3@main
# experimental targets generally lack lxml wheels
- name: Install libxml2 and libxslt development packages
if: ${{ matrix.experimental && matrix.os != 'macos-latest' }}
run: sudo apt install libxml2-dev libxslt-dev python3-dev
# macos needs newer bash
- name: Install macos deps
if: ${{ matrix.os == 'macos-latest' }}
run: |
brew install bash gnu-sed gpatch
# enable gnu-sed usage as "sed"
echo "/opt/homebrew/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
# enable gpatch usage as "sed"
echo "/opt/homebrew/opt/gpatch/libexec/gnubin" >> $GITHUB_PATH
- name: Install non-python deps
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
sudo apt install cpanminus
# dep for perl checks
sudo cpanm --quiet --notest Gentoo::PerlMod::Version
- name: Pin dependencies to minimal versions
if: ${{ matrix.deps == 'minimal-deps' }}
run: sed -e '/^requires-python/!s/~=/==/' -i pyproject.toml
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
cache-dependency-path: pyproject.toml
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ".[test]" pytest-github-actions-annotate-failures
- name: Test with pytest
env:
PY_COLORS: 1 # forcibly enable pytest colors
run: pytest --cov --cov-report=term --cov-report=xml -v
- name: Submit code coverage to codecov
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: codecov/codecov-action@v3
with:
files: ./coverage.xml
lint:
runs-on: ubuntu-latest
if: inputs.disable-format-check == ''
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install bash 5.3
uses: pkgcore/gh-actions/bash-5.3@main
- name: Set up Python 3
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install . pylint
- name: Run linting tools
run: pylint --exit-zero src/pkgcheck
- uses: astral-sh/ruff-action@v3
with:
args: "check --diff"
format:
runs-on: ubuntu-latest
if: inputs.disable-format-check == ''
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v3
with:
args: "format --check --diff"