-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (130 loc) · 4.66 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
name: test
on:
push:
pull_request:
jobs:
# First, check if the types/formatting is correct.
types-and-linting:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
architecture: x64
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install flake8 black mypy
python -m pip install -r requirements.txt
- name: Lint with Black
uses: rickstaa/action-black@v1
with:
black_args: ". --check --diff"
- name: Check types
run: |
mypy biobalm
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 biobalm --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 biobalm --ignore=E203,W503,C901 --select=C,E,F,W,B,B950 --max-line-length=127 --statistics --count --max-complexity=10
doctests:
runs-on: ubuntu-latest
timeout-minutes: 5
needs: [types-and-linting]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install clingo
run: sudo apt-get -y install gringo
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: 3.11
architecture: x64
- name: Fetch and install native Pint
run: |
wget https://github.com/pauleve/pint/releases/download//2019-05-24/pint_2019-05-24_amd64.deb
sudo apt install ./pint_2019-05-24_amd64.deb
- name: Fetch and install Mole
run: |
wget http://www.lsv.fr/~schwoon/tools/mole/mole-140428.tar.gz
tar -xvf mole-140428.tar.gz
(cd ./mole-140428 && make)
(cd ./mole-140428 && pwd >> $GITHUB_PATH)
- name: Install repo dependencies
run: pip install -r requirements.txt
- name: Run doctests
run: python -m doctest biobalm/*.py
# Then do a "small" test run with code coverage.
coverage:
runs-on: ubuntu-latest
timeout-minutes: 20
needs: [types-and-linting, doctests]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install clingo
run: sudo apt-get -y install gringo
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: 3.11
architecture: x64
- name: Fetch and install native Pint
run: |
wget https://github.com/pauleve/pint/releases/download//2019-05-24/pint_2019-05-24_amd64.deb
sudo apt install ./pint_2019-05-24_amd64.deb
- name: Fetch and install Mole
run: |
wget http://www.lsv.fr/~schwoon/tools/mole/mole-140428.tar.gz
tar -xvf mole-140428.tar.gz
(cd ./mole-140428 && make)
(cd ./mole-140428 && pwd >> $GITHUB_PATH)
- name: Install repo dependencies
run: pip install -r requirements.txt
- name: Install pytest
run: pip install pytest pytest-cov
- name: Run pytest with coverage
run: python3 -m pytest --networksize 20 --junitxml=pytest.xml --cov-report=term-missing:skip-covered --cov=biobalm tests/ | tee pytest-coverage.txt
- name: Pytest coverage comment
uses: MishaKav/pytest-coverage-comment@main
with:
pytest-coverage-path: ./pytest-coverage.txt
junitxml-path: ./pytest.xml
# Then do a full test for correctness using larger networks.
tests:
runs-on: ubuntu-latest
timeout-minutes: 20
needs: [types-and-linting, doctests, coverage]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install clingo
run: sudo apt-get -y install gringo
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: 3.11
architecture: x64
- name: Fetch and install native Pint
run: |
wget https://github.com/pauleve/pint/releases/download//2019-05-24/pint_2019-05-24_amd64.deb
sudo apt install ./pint_2019-05-24_amd64.deb
- name: Fetch and install Mole
run: |
wget http://www.lsv.fr/~schwoon/tools/mole/mole-140428.tar.gz
tar -xvf mole-140428.tar.gz
(cd ./mole-140428 && make)
(cd ./mole-140428 && pwd >> $GITHUB_PATH)
- name: Install repo dependencies
run: pip install -r requirements.txt
- name: Install pytest
run: pip install pytest
- name: Run pytest (without coverage)
run: python3 -m pytest --networksize 30 tests/