-
Notifications
You must be signed in to change notification settings - Fork 36
157 lines (130 loc) · 4.03 KB
/
linux.yaml
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
name: Linux
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
# Scheduled workflows run on the latest commit on the default or base branch
- cron: "0 0 1 * *"
workflow_dispatch:
inputs:
reason:
description: "Reason for manually triggering workflow"
required: true
jobs:
tests:
runs-on: ubuntu-20.04
steps:
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ubuntu-tests-pip
- uses: actions/checkout@v3
# NOTE: The last specified version will be used as a default one.
- uses: actions/setup-python@v4
with:
python-version: |
pypy3.9
3.9
3.10
3.11
- name: Update host Python packaging
run: |
python -m pip install --upgrade nox pip
- name: Install OpenBLAS (for SciPy build in PyPy)
run: |
sudo apt-get update
sudo apt-get install libopenblas-dev
- name: Unit tests in Python 3.9
run: |
nox --session unit-3.9
- name: Sanity check Python 3.9 (ensure not resolved as PyPy by mistake)
run: |
IMPLEMENTATION_NAME=$(.nox/unit-3-9/bin/python -c 'import sys; print(sys.implementation.name)')
if [[ "${IMPLEMENTATION_NAME}" != "cpython" ]]; then
echo "Unexpected implementation (${IMPLEMENTATION_NAME}), expected CPython" >&2
exit 1
fi
- name: Unit tests in Python 3.10
run: |
nox --session unit-3.10
- name: Unit tests in pypy3
run: |
nox --session unit-pypy3
- name: Unit tests AND line coverage in Python 3.11
run: |
nox --session cover
- name: Functional tests in Python 3.11
run: |
nox --session functional-3.11
- name: Upload coverage to coveralls
if: github.event_name != 'pull_request'
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
run: |
./scripts/upload-coveralls.sh
lint:
runs-on: ubuntu-20.04
steps:
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ubuntu-lint-pip
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Update host Python packaging
run: |
python -m pip install --upgrade nox pip
- name: Check that all Cython generated files have been updated
run: |
nox --session "update_generated(check=True)"
- name: Lint code for style issues
run: |
nox --session lint
- name: Check that test case examples are valid for JSON schema
run: |
nox --session validate-functional-test-cases
docs:
runs-on: ubuntu-20.04
steps:
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ubuntu-docs-pip
- uses: actions/checkout@v3
# NOTE: The last specified version will be used as a default one.
- uses: actions/setup-python@v4
with:
python-version: |
3.9
3.11
- name: Update host Python packaging
run: |
python -m pip install --upgrade nox pip
- name: Run all doctests
env:
MATPLOTLIBRC: tests
run: |
nox --session doctest
- name: Build docs
env:
MATPLOTLIBRC: tests
run: |
nox --session docs