🔧 Fix GitHub Actions SSH test failures and exclude real_world tests f… #196
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/ -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: | | |
| pytest tests/test_integration.py -v -x | |
| - 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/notebooks/basic_usage.ipynb | |
| # Note: Full notebook execution would require cluster setup |