-
Notifications
You must be signed in to change notification settings - Fork 68
113 lines (98 loc) · 4.16 KB
/
testing.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
name: testing
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
check-enums:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{github.event.pull_request.head.repo.full_name}}
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: pip
- name: Install dependencies
run: |
pip install --upgrade pip pip-tools black ruamel.yaml
pip install --user --no-deps -e ./emmet-core
- name: Generate enums and check output
id: enums
shell: bash -l {0}
run: |
set -e
python emmet-core/dev_scripts/generate_enums.py
black emmet-core/emmet/core/*/calc_types/enums.py
echo "count=$(git diff --exit-code --quiet HEAD emmet-core/emmet/core/*/calc_types/enums.py || echo "1")" >> $GITHUB_OUTPUT
echo "files=$(git ls-files --exclude-standard --others emmet-core/emmet/core/*/calc_types/enums.py | wc -l | xargs)" >> $GITHUB_OUTPUT
- name: Commit & push enums changes
shell: bash -l {0}
run: |
set -e
if [[ "${{ steps.enums.outputs.count }}" != "" || "${{ steps.enums.outputs.files }}" != "0" ]]; then
git config user.name github-actions
git config user.email [email protected]
git add emmet-core/emmet/core/*/calc_types/enums.py
git commit -m "[automated commit] update calc type enums"
git push
else
echo "No changes detected in enum files."
fi
test:
# to-do: add check-enums req after finding solution for pushing to external forks
#needs: check-enums
strategy:
matrix:
os: ["ubuntu-latest"] # TODO openbabel for windows and mac
package: ["emmet-core", "emmet-builders", "emmet-api"]
python-version: ["3.10", "3.11"]
name: ${{ matrix.package }} (${{ matrix.os }}/py${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{github.event.pull_request.head.repo.full_name}}
fetch-depth: 0
- name: Set up Miniconda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
channels: anaconda, conda-forge
- name: Install all conda requirements
shell: bash -l {0}
run: conda install openbabel openff-toolkit>=0.14.0 openff-interchange>=0.3.22 sqlite -y
- name: Install Python dependencies
shell: bash -l {0}
run: |
python${{ matrix.python-version }} -m pip install --upgrade pip pip-tools
python${{ matrix.python-version }} -m pip install --user `grep numpy ${{ matrix.package }}/requirements/${{ matrix.os }}_py${{ matrix.python-version }}_extras.txt`
python${{ matrix.python-version }} -m pip install --user -r ${{ matrix.package }}/requirements/${{ matrix.os }}_py${{ matrix.python-version }}_extras.txt
env:
CC: gcc-10
CXX: g++-10
- name: Install editable emmet-core if needed
shell: bash -l {0}
if: matrix.package != 'emmet-core'
run: python${{ matrix.python-version }} -m pip install --user --no-deps ./emmet-core
- name: Install ${{ matrix.package }}
shell: bash -l {0}
run: python${{ matrix.python-version }} -m pip install --user --no-deps -e ./${{ matrix.package }}
- name: Lint with mypy
shell: bash -l {0}
run: python${{ matrix.python-version }} -m mypy --namespace-package ${{ matrix.package }}/emmet
- name: Test with pytest
if: always() # run tests even if linting failed
shell: bash -l {0}
run: python${{ matrix.python-version }} -m pytest --cov=emmet --cov-report=xml ${{ matrix.package }}/tests
- uses: codecov/[email protected]
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.xml