-
Notifications
You must be signed in to change notification settings - Fork 3
148 lines (120 loc) · 4.14 KB
/
Copy pathtests.yml
File metadata and controls
148 lines (120 loc) · 4.14 KB
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
name: Tests
on:
push:
branches: [ master, main, develop ]
pull_request:
branches: [ master, main, develop ]
permissions:
contents: write
pull-requests: read
jobs:
test:
runs-on: ${{ matrix.os }}
timeout-minutes: 15
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
exclude:
# Reduce matrix size by excluding some combinations
- os: windows-latest
python-version: '3.8'
- os: macos-latest
python-version: '3.8'
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev,test,kubernetes,widget]"
- name: Lint with black
run: |
black --check clustrix/ tests/
- name: Lint with flake8
run: |
flake8 clustrix/ tests/ --max-line-length=88 --extend-ignore=E203,W503,F401,E722,F541,F841,F811,E731,E501,W291,W293,F824 --exit-zero
- name: Test with pytest
run: |
pytest tests/unit/ -v --cov=clustrix --cov-report=xml --cov-report=html --cov-report=term-missing --cov-report=json -m "not real_world"
- name: Update coverage badge
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' && github.ref == 'refs/heads/master'
run: |
python .github/scripts/update_coverage_badge.py
- name: Commit coverage badge update
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' && github.ref == 'refs/heads/master'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add README.md
git diff --staged --quiet || git commit -m "Update coverage badge [skip ci]"
git push
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Test installation
run: |
pip install .
python -c "import clustrix; print('Clustrix installed successfully')"
- name: Test CLI
run: |
clustrix --help
clustrix config --help
integration-test:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: test
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev,test,kubernetes,widget]"
- name: Run integration tests
run: |
# Run only local integration tests that don't require external resources
pytest tests/ -k "integration and local and not (gpu or aws or azure or gcp or ssh or slurm or pbs or sge)" -v -x -m "not real_world" || true
- name: Test example scripts
run: |
python -c "
from clustrix import cluster, configure
configure(cluster_host=None) # Local execution
@cluster(cores=2)
def test_example():
return sum(range(100))
result = test_example()
assert result == 4950
print('Example test passed!')
"
docs-test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y pandoc
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[docs]"
- name: Test documentation build
run: |
cd docs
make html
- name: Test notebook execution
run: |
pip install jupyter nbconvert
jupyter nbconvert --to script docs/source/notebooks/basic_usage.ipynb
# Note: Full notebook execution would require cluster setup