-
Notifications
You must be signed in to change notification settings - Fork 33
126 lines (114 loc) · 4.61 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
# Test straxen on each PR.
# We run three types of tests:
# - Pytest -> these are the "normal" tests and should be run for all
# python versions
# - Coveralls -> this is to see if we are covering all our lines of
# code with our tests. The results get uploaded to
# coveralls.io/github/XENONnT/straxen
# - pytest_no_database -> we want to make sure we can run the tests even
# if we don't have access to our database since this will e.g. happen
# when someone is pushing a PR from their own fork as we don't
# propagate our secrets there.
name: Test package
# Trigger this code when a new release is published
on:
workflow_dispatch:
release:
types: [ created ]
pull_request:
push:
branches:
- master
- stable
- development
jobs:
update:
name: "${{ matrix.test }}_py${{ matrix.python-version }}"
runs-on: ubuntu-latest
env:
HAVE_ACCESS_TO_SECTETS: ${{ secrets.RUNDB_API_URL }}
strategy:
fail-fast: False
matrix:
python-version: [ 3.8, 3.9, "3.10" ]
test: [ 'coveralls', 'pytest', 'pytest_no_database' ]
# Only run on py3.8. Py3.10 is quite slow, so no coveralls
exclude:
- python-version: "3.10"
test: coveralls
- python-version: 3.9
test: pytest_no_database
- python-version: "3.10"
test: pytest_no_database
steps:
# Setup and installation
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4.7.0
with:
python-version: ${{ matrix.python-version }}
- name: Install requirements
run: |
pip install -r extra_requirements/requirements-tests.txt
- name: Start MongoDB
uses: supercharge/mongodb-github-action@1.9.0
with:
mongodb-version: 4.4.1
- name: patch utilix file
# Secrets and required files
# Patch this file if we want to have access to the database
if: matrix.test != 'pytest_no_database'
run: bash .github/scripts/create_readonly_utilix_config.sh
env:
# RunDB
RUNDB_API_URL: ${{ secrets.RUNDB_API_URL }}
RUNDB_API_USER_READONLY: ${{ secrets.RUNDB_API_USER_READONLY }}
RUNDB_API_PASSWORD_READONLY: ${{ secrets.RUNDB_API_PASSWORD_READONLY}}
PYMONGO_URL: ${{ secrets.PYMONGO_URL }}
PYMONGO_USER: ${{ secrets.PYMONGO_USER }}
PYMONGO_PASSWORD: ${{ secrets.PYMONGO_PASSWORD }}
PYMONGO_DATABASE: ${{ secrets.PYMONGO_DATABASE }}
# SCADA
SCADA_URL: ${{ secrets.SCADA_URL }}
SCADA_VALUE_URL: ${{ secrets.SCADA_VALUE_URL }}
SCADA_USER: ${{ secrets.SCADA_USER }}
SCADA_LOGIN_URL: ${{ secrets.SCADA_LOGIN_URL }}
SCADA_PWD: ${{ secrets.SCADA_PWD }}
- name: Create pre-apply function file
# In case we do not have database. We need to make a local file for
# The pre_apply_function (see #559).
if: env.HAVE_ACCESS_TO_SECTETS == null || matrix.test == 'pytest_no_database'
run: bash .github/scripts/create_pre_apply_function.sh $HOME
- name: Test package
# This is running a normal test
if: (matrix.test == 'pytest_no_database' || matrix.test == 'pytest')
env:
ALLOW_WFSIM_TEST: 1
TEST_MONGO_URI: 'mongodb://localhost:27017/'
run: |
coverage run --source=straxen -m pytest --durations 0
coverage report
- name: Coveralls
# Make the coverage report and upload
env:
TEST_MONGO_URI: 'mongodb://localhost:27017/'
ALLOW_WFSIM_TEST: 1
NUMBA_DISABLE_JIT: 1
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: matrix.test == 'coveralls' && (github.actor != 'dependabot[bot]') && env.HAVE_ACCESS_TO_SECTETS != null
run: |
# Omit ./straxen/storage/rucio_remote.py since it's only tested in base_env
coverage run --source=straxen -m pytest -v
# Test notebooks
coverage run --append --source=straxen -m pytest -v --nbmake -n=auto notebooks/tutorials/SuperrunsExample.ipynb
coverage run --append --source=straxen -m pytest -v --nbmake -n=auto notebooks/tutorials/ScadaInterfaceExample.ipynb
# Run twice, once without and once with db access
if test -f ~/.xenon_config; then
rm ~/.xenon_config
fi
bash .github/scripts/create_pre_apply_function.sh $HOME
coverage run --append --source=straxen -m pytest -v
coveralls --service=github
- name: goodbye
run: echo "tests done, bye bye"