-
Notifications
You must be signed in to change notification settings - Fork 11
183 lines (157 loc) · 5.52 KB
/
test.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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
name: Test
on:
push:
paths-ignore:
- 'docs/**'
branches:
- main
- 'release**'
pull_request:
branches:
- main
- 'release**'
paths-ignore:
- 'docs/**'
types: [opened, synchronize]
# Allows workflows to be manually triggered
workflow_dispatch:
permissions:
contents: read
# Needed for the 'trilom/file-changes-action' action
pull-requests: read
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
# Look into replacing this with pre-commit.ci
code-quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- id: file_changes
uses: trilom/[email protected]
with:
output: " "
- name: List changed files
run: echo '${{ steps.file_changes.outputs.files}}'
- uses: pre-commit/[email protected]
with:
extra_args: --files ${{ steps.file_changes.outputs.files}}
- name: Check for missing init files
run: build_tools/fail_on_missing_init_files.sh
shell: bash
test-nodevdeps:
needs: code-quality
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Display Python version
run: python -c "import sys; print(sys.version)"
- name: Install skbase and dependencies
run: |
python -m pip install .
- name: Run pytest-free tests
run: |
python skbase/_nopytest_tests.py
test-windows:
needs: code-quality
runs-on: windows-2019
strategy:
fail-fast: false # to not fail all combinations if just one fail
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
channels: anaconda, conda-forge,
- run: conda --version
- run: which python
- name: Fix windows paths
if: ${{ runner.os == 'Windows' }}
run: echo "C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install conda libpython
run: conda install -c anaconda libpython
- name: Install sktime and dependencies
run: python -m pip install .[test]
- name: Show dependencies
run: python -m pip list
- name: Run tests
run: |
mkdir -p testdir/
cp setup.cfg testdir/
python -m pytest
- name: Publish code coverage
uses: codecov/codecov-action@v3
test-unix:
needs: code-quality
name: Test ${{ matrix.os }}-${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-latest]
python-version: ['3.8', '3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
name: Set up conda
with:
# We want to come back and add a previous step (maybe our own github action)
# that will generate the test_env.yml file based on pyproject.toml
# Doing it this way is easier and lets us easily use conda to install everything
# But just have packages listed in pyproject.toml
# activate-environment: test_env
# environment-file: build_tools/test_env.yml
auto-update-conda: true
miniconda-version: "latest"
python-version: ${{ matrix.python-version }}
channels: anaconda, conda-forge
channel-priority: true
auto-activate-base: false
activate-environment: test
use-only-tar-bz2: true
# Useful for troubleshooting
- name: Check Conda Setup
shell: bash -l {0}
run: |
conda --version
conda info --envs
which python
which pip
# We want to replace this with the earlier step that
# auto generates a environment.yml (named based on pyproject.toml dep table name)
# that is installed by conda
# The downside of doing it this way is that pip will be greedy
# It could cause some dependencies all ready installed by conda to be
# installed in different verisons that break the installation
# in BaseObject this likelihood is not high, but creating this functionality
# will be a nice value add (and has uses outside of .github actions)
- name: Install dependencies
shell: bash -l {0}
run: |
python -VV
python -m pip install .[test]
# Commented out for now. Turn on once dependencies are shrunk.
# - name: Run Safety security check
# shell: bash -l {0}
# This will scan the installed python environment for all installed dependencies
# including transitive dependencies. Checks for dependencies with known CVEs
# Ignoring CVEs disputed by NumPy devs with IDs 44715, 44716, 44717
# run: safety check --full-report -i 44715 -i 44716 -i 44717
# Do not continue on error. Fail the action if safety returns a
# non-zero exit code indicating a vulnerability has been found
# continue-on-error: false
- name: Run tests
shell: bash -l {0}
run: |
python -m pytest
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3