-
Notifications
You must be signed in to change notification settings - Fork 33
132 lines (118 loc) · 4.86 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
# 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:
test:
name: "${{ matrix.test }}_py${{ matrix.python-version }}"
runs-on: ubuntu-latest
env:
HAVE_ACCESS_TO_SECRETS: ${{ secrets.RUNDB_API_URL }}
strategy:
fail-fast: False
matrix:
python-version: [ "3.9", "3.10" ]
test: [ 'coveralls', 'pytest', 'pytest_no_database' ]
# Drop some not crucial tests for python 3.10 and 3.11
exclude:
- python-version: "3.11"
test: coveralls
- python-version: "3.10"
test: pytest_no_database
- python-version: "3.11"
test: pytest_no_database
steps:
# Setup and installation
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5.2.0
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: sudo apt-get install -y graphviz
- name: Install requirements
run: |
pip install pytest hypothesis coverage coveralls
pip install git+https://github.com/XENONnT/base_environment.git --force-reinstall
pip install git+https://github.com/AxFoundation/strax.git --force-reinstall
- name: Start MongoDB
uses: supercharge/mongodb-github-action@1.11.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_SECRETS == 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:
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/'
NUMBA_DISABLE_JIT: 1
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: matrix.test == 'coveralls' && (github.actor != 'dependabot[bot]') && env.HAVE_ACCESS_TO_SECRETS != null
run: |
# Install straxen first
pip install -e .
# 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"