-
Notifications
You must be signed in to change notification settings - Fork 1.3k
156 lines (126 loc) · 4.16 KB
/
pytest.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
name: Tests
on:
# Manually triggerable in github
workflow_dispatch:
# When a push occurs on either of these branches
push:
branches:
- master
- development
# When a push occurs on a PR that targets these branches
pull_request:
branches:
- master
- development
schedule:
# Every day at 7AM UTC
- cron: '0 07 * * *'
env:
# Arguments used for pytest
pytest-args: >-
--forked
--durations=20
--timeout=600
--timeout-method=thread
-s
# Arguments used for code-cov which is later used to annotate PR's on github
code-cov-args: >-
--cov=autosklearn
--cov-report=xml
jobs:
ubuntu:
name: ${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.kind }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
python-version: ['3.7', '3.8', '3.9'] # 3.10 once updated
kind: ['conda', 'source', 'dist']
exclude:
# Exclude all configurations *-*-dist, include one later
- kind: 'dist'
# Exclude windows as bash commands wont work in windows runner
- os: windows-latest
# Exclude macos as there are permission errors using conda as we do
- os: macos-latest
include:
# Add the tag code-cov to ubuntu-3.7-source
- os: ubuntu-latest
python-version: 3.7
kind: 'source'
code-cov: true
# Include one config with dist, ubuntu-3.7-dist
- os: ubuntu-latest
python-version: 3.7
kind: 'dist'
steps:
- name: Checkout
uses: actions/[email protected]
with:
submodules: recursive
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Conda install
if: matrix.kind == 'conda'
run: |
# Miniconda is available in $CONDA env var
$CONDA/bin/conda create -n testenv --yes pip wheel gxx_linux-64 gcc_linux-64 swig python=${{ matrix.python-version }}
$CONDA/envs/testenv/bin/python3 -m pip install --upgrade pip
$CONDA/envs/testenv/bin/pip3 install -e .[test]
- name: Source install
if: matrix.kind == 'source'
run: |
python -m pip install --upgrade pip
pip install -e .[test]
- name: Dist install
if: matrix.kind == 'dist'
run: |
python -m pip install --upgrade pip
python setup.py sdist
last_dist=$(ls -t dist/auto-sklearn-*.tar.gz | head -n 1)
pip install $last_dist[test]
- name: Store git status
id: status-before
run: |
echo "::set-output name=BEFORE::$(git status --porcelain -b)"
- name: Tests
timeout-minutes: 120
run: |
export OPENBLAS_NUM_THREADS=1
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
if [[ ${{ matrix.kind }} == 'conda' ]]; then
PYTHON=$CONDA/envs/testenv/bin/python3
# As one of the tests runs a subprocess command and calls `python3`, we must
# explicitly add it to the path
export PATH="$CONDA/envs/testenv/bin:$PATH"
else
PYTHON=$(which python3)
fi
if [ ${{ matrix.code-cov }} ]; then
$PYTHON -m pytest ${{ env.pytest-args }} ${{ env.code-cov-args }} test
else
$PYTHON -m pytest ${{ env.pytest-args }} test
fi
- name: Check for files left behind by test
if: ${{ always() }}
run: |
# Deleting `.pytest_chache` as it's used during testing and not deleted
rm -rf ".pytest_cache"
before="${{ steps.status-before.outputs.BEFORE }}"
after="$(git status --porcelain -b)"
if [[ "$before" != "$after" ]]; then
echo "git status from before: $before"
echo "git status from after: $after"
echo "Not all generated files have been deleted!"
exit 1
fi
- name: Upload coverage
if: matrix.code-cov && always()
uses: codecov/codecov-action@v3
with:
fail_ci_if_error: true
verbose: true